【发布时间】:2021-11-09 13:45:27
【问题描述】:
在 R 中,我有一个数据框,其中有一列“食物”,其中包含 100 多个不同的字符串值。
例如:
id<-c("1", "2", "3", "4", "5", "6")
food <- c("X1_", "X2_", "X3_", "X4_", "X5_", "X100_")
df <- data.frame(id, food)
我想根据“food”列中的字符串创建一个新列“food_final”。我开始使用嵌套的 ifelses 和 grepl 编写代码,但是考虑到有 100 多个不同的字符串值,我知道拥有 100 多个 if else 绝对是不是这样做的最干净的方式,无论如何,一个人可以拥有多少个。
到目前为止我尝试过的示例:
df$food_final<-ifelse(grepl("X1_", df$food, ignore.case=TRUE), "1",
ifelse(grepl("X2_", df$food, ignore.case=TRUE), "2",
ifelse(grepl("X3_", df$food, ignore.case=TRUE), "3",
ifelse(grepl("X4_", df$food, ignore.case=TRUE), "4",
ifelse(grepl("X5_", df$food, ignore.case=TRUE), "5",
ifelse(grepl("X100_", df$food, ignore.case=TRUE), "100", NA))))))
创建这个新列“food_final”的最佳方法是什么,而不是使用这么多嵌套的 ifelse 语句?
提前谢谢你。
【问题讨论】:
标签: r if-statement nested grepl