如果我在另一列中有特定值,如何替换列中的 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))
我想使用 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))