例如我有一些数据
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 值的众数)
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