【问题标题】:r filtering for columns with equal values [duplicate]r过滤具有相等值的列[重复]
【发布时间】:2015-07-06 07:52:32
【问题描述】:

假设我有这样的数据集

`v6 v7   v8  v9
x  123  123  x
x  123  456  x
x  789  789  x
x  123  789  x `   

如何过滤,以便只提取第 7 列和第 8 列的值彼此相等的行,仍然在过滤后保留列的标题?我试过这段代码:

hg19 -> hg19[which(hg19$V7 == hg19$V8),]

还有这段代码:

non_coding= subset(hg19,hg19[8] == hg19[7])

其中 hg19 是数据集。 注意:真实数据集有超过 99,000 行和 16 列

【问题讨论】:

  • 与列名匹配。 hg19[hg19$v7 == hg19$v8,]。您使用的是V7V8 而不是v7v8。在第二个代码中,它对示例中不存在的 8th7th 列进行了子集化(因为它只有 4 列数据集。
  • 我已经编辑了原始帖子,但实际数据集有超过 99,000 行和 16 列。两个代码都按照我的要求做了,但他们没有保留列标题,这将使以后的数据难以处理
  • 为什么你的赋值箭头指向右边?
  • 另外,您的示例列名具有小写 v,但测试使用大写 V。 R 区分大小写。
  • 您到底是什么意思“在过滤后仍然保留列的标题”?你能用你的例子给我们预期的结果吗?使用到目前为止提供的解决方案,过滤后似乎保留了 v6 和 v8。你需要什么?

标签: r filter


【解决方案1】:

提供给您的代码可以正常工作并保留原始列名。

hg19[which(hg19$v7==hg19$v8),]
  v6  v7  v8 v9
1  x 123 123  x
3  x 789 789  x

【讨论】:

    【解决方案2】:
    non_coding <- subset(hg19, hg19$v7 == hg19$v8)
    

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多