如何替换 R 中从组获取模式的 NA

问题描述 投票:0回答:1

例如我有一些数据

x y 业主 H
1 2 A 1
2 5 A 不适用
2 2 A 5
2 5 A 4
2 5 B 4
2 5 C 3
3 3 C 6
3 3 C 不适用

当你按 (x,y,Owner) 分组得到时,我想用最常见/模式替换 Nans

x y 业主 H
1 2 A 1
2 5 A 4
2 2 A 5
2 5 A 4
2 5 B 4
2 5 C 3
3 3 C 6
3 3 C 6

我尝试过这个,但我认为当我只想更换 Nas 时它可以取代所有东西 new_data <- my_data %>% group_by('所有者', 'x', 'y') %>% 变异(H=平均值(H,na.rm=TRUE))

我见过这个:但它不起作用https://stackoverflow.com/questions/45741879/can-i-replace-nans-with-the-mode-of-a-column-in-a-grouped-数据框

new_data <- my_data %>% group_by('所有者', 'x', 'y') %>% 变异(H=平均值(H,na.rm=TRUE)

但这会将 H 的所有值替换为平均值。

(我希望它找到与 NA 匹配的所有者、x 和 y 的所有行,并采用它们的 H 值的众数)

r replace nan group
1个回答
0
投票
df %>%
   group_by(Owner, x, y) %>%
   mutate(H = replace_na(H, gtools::stat_mode(H, ties = 'first')))

# A tibble: 8 × 4
# Groups:   Owner, x, y [6]
      x     y Owner     H
  <int> <int> <chr> <int>
1     1     2 A         1
2     2     5 A         4
3     2     2 A         5
4     2     5 A         4
5     2     5 B         4
6     2     5 C         3
7     3     3 C         6
8     3     3 C         6
© www.soinside.com 2019 - 2024. All rights reserved.