R 用子集的最高值替换缺少的值
我想编写一个函数,通过我的df,将矩形列中未知值“UNK”的单元格替换为与“UNK”矩形相同的区域中具有最大总权重的矩形id i、 e.使用以下数据,我希望第一行中的“UNK”矩形单元格被替换为“37D5”R 用子集的最高值替换缺少的值,r,replace,R,Replace,我想编写一个函数,通过我的df,将矩形列中未知值“UNK”的单元格替换为与“UNK”矩形相同的区域中具有最大总权重的矩形id i、 e.使用以下数据,我希望第一行中的“UNK”矩形单元格被替换为“37D5” area让我们首先计算一个单独的表格,其中包含每个矩形的最大总权重,按area分组: weights <- df1 %>% group_by(area, rectangle) %>% summarize(weight = sum(weight)) %>%
area让我们首先计算一个单独的表格,其中包含每个矩形的最大总权重,按area
分组:
weights <- df1 %>% group_by(area, rectangle) %>%
summarize(weight = sum(weight)) %>%
filter(weight == max(weight)) %>%
select(-weight)
# A tibble: 3 x 2
# Groups: area [3]
area rectangle
<fct> <fct>
1 4.a 37D5
2 4.b 49E8
3 6.a 37D5
weights <- df1 %>% group_by(area, rectangle) %>%
summarize(weight = sum(weight)) %>%
filter(weight == max(weight)) %>%
select(-weight)
# A tibble: 3 x 2
# Groups: area [3]
area rectangle
<fct> <fct>
1 4.a 37D5
2 4.b 49E8
3 6.a 37D5
df1 %>%
left_join(., weights, by = c("area")) %>%
mutate(rectangle.x = if_else(rectangle.x == "UNK", rectangle.y, rectangle.x)) %>%
select(-rectangle.y) %>%
rename(rectangle = rectangle.x)
area rectangle weight trip
1 4.a 37D5 1800 1
2 4.a 37D5 200 2
3 4.a 39E1 595 3
4 6.a 42E7 219 4
5 4.a 37D5 517 5
6 4.a 37D5 610 6
7 6.a 37D5 2140 7
8 6.a 38D6 1248 8
9 4.a 43E8 120 9
10 4.a 45F2 492 10
11 4.b 40F2 1085 11
12 4.a 47F0 1278 12
13 4.a 37D5 1759 13
14 4.b 49E8 1902 14
15 4.b 50F0 1862 15