繁体   English   中英

基于条件的新列 R

[英]New column based on conditions in R

我有一个数据框

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"))

我最初有一个清单

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

在此处输入图像描述

我正在尝试以下 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

在此处输入图像描述

提前致谢

我们可以做一个rowwise ,得到列 'ITEM_NAME'、'ITEM' 和值向量之间的intersect 如果它们都不匹配,则返回“未知”

library(dplyr)
my_data %>% 
    rowwise %>% 
    mutate(name = c(intersect(c(ITEM_NAME, ITEM), 
        c("Apple", "Orange", "Milk", "Paneer")), "Unknown")[1]) %>% 
    ungroup

-输出

# 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM