检查通过使用列表中如果长期存在
问题描述:
我有这样一个数据帧:检查通过使用列表中如果长期存在
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