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
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. 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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.