如果我在另一列中有特定值,如何替换列中的 NA 值?

How can I replace an NA value in a column for something if I have an specific value in another column?

我想使用 tidyr 修改数据框。基本上在这个数据框中,我有一个包含不同类型产品的列:水果、蔬菜、肉类等......我们称之为“组”列。

在同一个数据框中,我还有另一列带有产品标签:水果和蔬菜产品、农产品、新鲜产品...我们称之为“标签”列。

我要做的是根据标签列的结果替换组列的 NA 值。例如:如果标签列显示“农产品”,那么我想用值“牛奶”替换组列的 NA 值。如果标签列显示“水果和蔬菜产品”,我希望组列的 NA 值取值“蔬菜”。

为此,我一直在尝试使用以下代码:

data_ES$Group <- data_ES$Group %>%
  replace_na('Vegetables', if(data_ES$Label = "Fruits and Vegetables products"))

当然这行不通,因为这只是我的直觉,我对编程还很陌生。

有人可以给我提示或想法吗?

我编写了一个小例子,我猜你正在搜索的是什么:

library(tidyverse)

df <- tibble(Group = c(NA,"Fruits","Vegetables",NA,"Meat"),
             Label = c("Fruits and Vegetables products",
                       "Fruits and Vegetables products",
                       "Fruits and Vegetables products",
                       "Farm products","Farm products" ))

df_replaced <- df %>% mutate(Group  = case_when(Label == "Fruits and Vegetables products" & is.na(Group)    
                                            ~ "Vegetables",
                                            Label == "Farm products" & is.na(Group) ~ "Milk",
                                            TRUE ~ Group))