检查通过使用列表中如果长期存在

我有这样一个数据帧:检查通过使用列表中如果长期存在

df <-data.frame(id = c(1,2,3), stock_1 = c("Google","Microsoft","Yahoo"), stock_2 = c("Yahoo","Gg","NA")) 

这个我知道下面是在同一个组:

mylist <- c("Google", "Gg") 

具有以前列出如何通过所有行运行mylist,并分别使用1或0来检查是否存在。如果在同一行1倍以上一遍需要输出

df <-data.frame(id = c(1,2,3), stock_1 = c("Google","Microsoft","Yahoo"), stock_2 = c("Yahoo","Gg","NA"), mylist = c(1,1,0)) 

回答:

的1

的值,例如我们可以用apply功能遍历的df行:

apply(df, 1, function(x) max(x %in% mylist)) 

# 1 1 0

我们可以存储此功能的新列结果:

df$mylist <- apply(df, 1, function(x) max(x %in% mylist)) 

# id stock_1 stock_2 mylist

# 1 1 Google Yahoo 1

# 2 2 Microsoft Gg 1

# 3 3 Yahoo NA 0

回答:

下面是一个使用do.call粘贴栏,然后使用grepl检测您mylist单词的矢量化的方式,即

as.integer(grepl(paste(mylist, collapse = '|'), do.call(paste, df[-1]))) 

#[1] 1 1 0

以上是 检查通过使用列表中如果长期存在 的全部内容, 来源链接: utcz.com/qa/265876.html

回到顶部