[英]New column based on conditions in R
I have a data frame我有一个数据框
my_data = data.frame(ITEM_GROUP = c("1","2","3","1","4"),
ITEM_NAME = c("Apple","Banana","Orange","Mango","Papaya"),
ITEM = c("Apple","Bana","Orange","sweet","Paneer"))
I have a list initially it我最初有一个清单
my_data$name <- apply(my_data,
1,
function(x) as.integer(any(grep("Apple|Orange|Milk|Paneer",x))))
ITEM_GROUP ITEM_NAME ITEM name
1 Apple Apple 1
2 Banana Bana 0
3 Orange Orange 1
1 Mango sweet 0
4 Papaya Paneer 1
Instead of 0 and 1 I am trying the following output我正在尝试以下 output 而不是 0 和 1
ITEM_GROUP ITEM_NAME ITEM name
1 Apple Apple Apple
2 Banana Bana Unknown
3 Orange Orange Orange
1 Mango Sweet Sweet
4 Papaya Paneer Paneer
Thanks in Advance提前致谢
We could do a rowwise
, get the intersect
between the columns 'ITEM_NAME', 'ITEM', and the vector of values.我们可以做一个
rowwise
,得到列 'ITEM_NAME'、'ITEM' 和值向量之间的intersect
。 If none of them matches, return 'Unknown'如果它们都不匹配,则返回“未知”
library(dplyr)
my_data %>%
rowwise %>%
mutate(name = c(intersect(c(ITEM_NAME, ITEM),
c("Apple", "Orange", "Milk", "Paneer")), "Unknown")[1]) %>%
ungroup
-output -输出
# A tibble: 5 x 4
ITEM_GROUP ITEM_NAME ITEM name
<chr> <chr> <chr> <chr>
1 1 Apple Apple Apple
2 2 Banana Bana Unknown
3 3 Orange Orange Orange
4 1 Mango sweet Unknown
5 4 Papaya Paneer Paneer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.