R 用子集的最高值替换缺少的值

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)) %>%

我想编写一个函数,通过我的df,将矩形列中未知值“UNK”的单元格替换为与“UNK”矩形相同的区域中具有最大总权重的矩形id

i、 e.使用以下数据,我希望第一行中的“UNK”矩形单元格被替换为“37D5”


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