R选择数据子集

use*_*020 2 r subset

我有一个包含三列的数据集.

## generate sample data
set.seed(1)
x<-sample(1:3,50,replace = T )
y<-sample(1:3,50,replace = T )
z<-sample(1:3,50,replace = T )
data<-as.data.frame(cbind(x,y,z))
Run Code Online (Sandbox Code Playgroud)

我想要做的是:

  1. 选择所有三列都有1的行

  2. 选择那些只有两列有1的行(可以是任何列)

  3. 只选择那些只有列有1的行(可以是任何列)

基本上我想要任何两列(第二种情况)满足条件而不是任何特定列.

我知道使用行选择

subset<-data[c(data$x==1,data$y==1,data$z==1),]
Run Code Online (Sandbox Code Playgroud)

但是这只根据特定列的条件选择那些行,而我希望三/两列中的任何一列满足我的标准

谢谢

edd*_*ddi 5

n = 1 # or 2 or 3
data[rowSums(data == 1) == n,]
Run Code Online (Sandbox Code Playgroud)