2017-12-27 125 views
0

我有這樣一個數據幀:檢查通過使用列表中如果長期存在

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

回答

2

的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 
0

下面是一個使用do.call粘貼欄,然後使用grepl檢測您mylist單詞的矢量化的方式,即

as.integer(grepl(paste(mylist, collapse = '|'), do.call(paste, df[-1]))) 
#[1] 1 1 0 
相關問題