我有一個數據幀,它有一個變量序列c1...c20
。每個變量都包含一個代碼。我有一個代碼向量,code.vec
,並且我想要將數據集的子集包含c1|c2|c3|...|c20
位於code.vec
的記錄。基於變量序列過濾數據幀
實例數據(僅使用了例如3個cn
變量):
code.vec<-c("T1", "T2", "T3", "T4")
c1<-c("T1", "X1", "T6", "R5")
c2<-c("R4", "C6", "C7", "X3")
c3<-c("C5", "C2", "X4", "T2")
df<-data.frame(c1, c2, c3)
這是我目前在做什麼:
library(dplyr)
df %>% filter(c1 %in% code.vec | c2 %in% code.vec | c3 %in% code.vec)
c1 c2 c3
1 T1 R4 C5
2 R5 X3 T2
這工作,但由於真正的數據幀有20 cn
變量,它變得很多打字。似乎應該有一個簡單的應用程序或循環解決方案(這很容易在SAS中使用數組和循環),但我無法在R中找到解決方案,而且我也找不到任何類似的問題這裏。
這完美地工作。它表明在某種地方有一種解決方案比我想要做的要簡單得多。 – patward5656
@ patward5656'tidyverse'確實非常強大。另外,如果你想對_all_變量包含'code.vec'的行進行過濾,你可以改爲使用'df%>%filter_all(all_vars(。%in%code.vec))''。 – useR
這是有史以來最受讚賞的答覆之一。它有一個唯一的upvote,從我這裏,很棒。 – Dirk