R 如何子集数据帧中具有特定值的所有行
我有一个大型数据集,每行包含“NA”、“1”和“2”的不同组合。我想对所有只包含“2”和“NA”的行进行子集划分 因此,在下面的示例中,我想自动命名并子集第1行和第4行:R 如何子集数据帧中具有特定值的所有行,r,dataframe,subset,R,Dataframe,Subset,我有一个大型数据集,每行包含“NA”、“1”和“2”的不同组合。我想对所有只包含“2”和“NA”的行进行子集划分 因此,在下面的示例中,我想自动命名并子集第1行和第4行: df <- data.frame(Col1=c(NA,NA,2,NA), Col2=c(NA,NA,1,2), Col3=c(NA,1,NA,NA), Col4=c(2,NA,NA,NA),
df <- data.frame(Col1=c(NA,NA,2,NA),
Col2=c(NA,NA,1,2),
Col3=c(NA,1,NA,NA),
Col4=c(2,NA,NA,NA),
row.names=c("Row1","Row2","Row3","Row4"),
stringsAsFactors = FALSE)
df试试这个:
target <- 2
#print row names
names(which(apply(df, 1, function(x) all(na.omit(x)==target))==TRUE))
[1] "Row1" "Row4"
#subset rows
df_sub <- df[apply(df, 1, function(x) all(na.omit(x)==target)),]
print(df_sub)
Col1 Col2 Col3 Col4
Row1 NA NA NA 2
Row4 NA 2 NA NA
target谢谢,但这不起作用,因为“2”可以在任何列中,而不仅仅是在“x”列中。在问题被示例数据增强后,它不应该被关闭,IMHO。我正要发布df[!rowSums(df!=2,na.rm=TRUE),]
以及行名称(df[!rowSums(df!=2,na.rm=TRUE),]))
作为回答…谢谢,我想添加一个示例,但我不知道如何编辑我自己的问题(…)我的数据框有行名称,因此我也想获得所选行的行名称。再次感谢。好的,我已经相应地更新了我的答案,并为您编辑了您的问题。如果您只想删除包含1的行,您可以执行df[!apply(df,1,'%in%',x=1),]
df <- data.frame(Col1=c(NA,NA,2,NA),
Col2=c(NA,NA,1,2),
Col3=c(NA,1,NA,NA),
Col4=c(2,NA,NA,NA),
row.names=c("Row1","Row2","Row3","Row4"),
stringsAsFactors = FALSE)