R studio .csv表子集

时间:2016-07-08 13:59:16

标签: r

我在R(标题大写)中加载了一个这类(但更大)的表格:

https://postimg.org/image/66qmiayj5/

有没有人知道如何使用以下方法制作此表的子集:

  • 所有行的值为'是'对于所有列
  • 所有行'是'在每一栏中,只有一栏没有'
  • 所有行'是'在每一列,但两个'没有'
  • 等...

2 个答案:

答案 0 :(得分:0)

您可以使用rowSums。举个例子:

df <- data.frame('GENES'=1:3,'STRAIN_1'=c(TRUE,TRUE,FALSE),'STRAIN_2'=c(TRUE,TRUE,FALSE),'STRAIN_3'=c(TRUE,FALSE,TRUE))
> df
  GENES STRAIN_1 STRAIN_2 STRAIN_3
1     1     TRUE     TRUE     TRUE
2     2     TRUE     TRUE    FALSE
3     3    FALSE    FALSE     TRUE

您可以按以下方式对数据集进行子集化。

 > df[rowSums(df[,-1])==1,]
  GENES STRAIN_1 STRAIN_2 STRAIN_3
3     3    FALSE    FALSE     TRUE

> df[rowSums(df[,-1])==2,]
  GENES STRAIN_1 STRAIN_2 STRAIN_3
2     2     TRUE     TRUE    FALSE

请注意,df[,-1]用于排除第一列,rowSums(df[,-1])检索每行TRUE的数量。

答案 1 :(得分:0)

尝试使用filter的{​​{1}}命令。有一些方法可以在不创建新列的情况下执行此操作,但我想明确了解此代码中的内容。

dplyr