以下工作并按照我的意愿行事:
dat<-subset(data,NLI.1 %in% NLI)
但是,我可能需要通过不同的列(即NLI.2和NLI.3)进行子集。我试过了
NLI_col<-"NLI.1"
NLI_col<-subset(data,select=NLI_col)
dat<-subset(data,NLI_col %in% NLI)
不出所料,这不起作用。如何使用NLI_col
来实现有效代码的结果?
要求我举例说明data
的样子。这里:
NLI.1<-c(NA,NA,NA,NA,NA,1,2,2,2,NA,2,2,2,2,2,2,2,NA,NA,2,2,2,2,NA,2,2,2,2,2,2,2,NA,NA,NA,NA,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,NA,2,2,2,2,2,2,2,2,2,2,NA,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,1,2,2,2)
NLI.2<-c(NA,NA,NA,NA,NA,NA,2,2,2,NA,NA,2,2,2,2,2,2,NA,2,2,2,2,2,NA,2,2,2,2,2,2,2,NA,NA,NA,NA,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,NA,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,2,2)
NLI.3<-c(NA,35,40,NA,10,NA,31,NA,14,NA,NA,15,17,NA,NA,16,10,15,14,39,17,35,14,14,22,10,15,0,34,23,13,35,32,2,14,10,14,10,10,10,40,10,13,13,10,10,10,13,13,25,10,35,NA,13,NA,10,40,0,0,20,40,10,14,40,10,10,10,10,13,10,8,NA,NA,14,NA,10,28,10,10,15,15,16,10,10,35,16,NA,NA,NA,NA,30,19,14,30,10,10,8,10,21,10,10,35,15,34,10,39,NA,10,10,6,16,10,10,10,10,34,10)
other<-c(NA,NA,511,NA,NA,NA,NA,NA,849,NA,NA,NA,NA,1324,1181,832,1005,166,204,1253,529,317,294,NA,514,801,534,1319,272,315,572,96,666,236,842,980,290,843,904,528,27,366,540,560,659,107,63,20,1184,1052,214,46,139,310,872,891,651,687,434,1115,1289,455,764,938,1188,105,757,719,1236,982,710,NA,NA,632,NA,546,747,941,1257,99,133,61,249,NA,NA,1080,NA,645,19,107,486,1198,276,777,738,1073,539,1096,686,505,104,5,55,553,1023,1333,NA,NA,969,691,1227,1059,358,991,1019,NA,1216)
data<-cbind(NLI.1,NLI.2,NLI.3,other)
NLI<-c(10,13)
这样,在进行子设置之后,如果data$NLI.3
NLI_col <- "NLI.3"
中获得包含数十和十三行的所有行
由于这是相对微不足道的,我猜这是一个重复的问题(我的道歉),但是时间拖延,我仍然无法找到解决方案
答案 0 :(得分:2)
好像你不必要地使用subset
。试试这个:
NLI_col <- 'NLI.3'
head(data[,NLI_col] %in% NLI)
## [1] FALSE FALSE FALSE FALSE TRUE FALSE
head(data[data[,NLI_col] %in% NLI, ])
## NLI.1 NLI.2 NLI.3 other
## 5 NA NA 10 NA
## 17 2 2 10 1005
## 26 2 2 10 801
## 31 2 2 13 572
## 36 2 2 10 980
## 38 2 2 10 843
答案 1 :(得分:0)
我不确定我是否完全遵循了这个问题。您是否要求只包含包含10或13的NLI.3行?它比那复杂吗?
如果你只想获得这些行......
df[ which(df$NLI.3==10 | df$NLI.3==13 ),]
假设您的数据位于数据框中。此外,我将数据框的名称从“数据”更改为“df” - 称其为“数据”可能会导致问题。