【问题标题】:How to subset a data frame by taking only the Non NA values of 2 columns in this data frame如何通过仅获取此数据框中 2 列的非 NA 值来对数据框进行子集化
【发布时间】:2015-04-14 06:37:06
【问题描述】:

我正在尝试通过获取我的数据帧中 2 列的整数值来对数据帧进行子集化

Subs1<-subset(DATA,DATA[,2][!is.na(DATA[,2])] & DATA[,3][!is.na(DATA[,3])])

但它给了我一个错误:较长的对象长度不是较短对象长度的倍数。

如何构造一个由第 2 列和第 3 列的 NON NA 值组成的子集?

非常感谢?

【问题讨论】:

  • 我会尝试DATA[complete.cases(DATA[, 2:3]), ] - 除了第 2 列和第 3 列中带有 NA 的行之外的所有行。
  • 我从来没有使用过 tihs 语句卢克,你能提供我整个 R 语法吗?
  • 这是非常基本的,网上有很多信息:google.com/search?q=r+subsetting。另请查看?complete.cases

标签: r missing-data subset


【解决方案1】:

试试这个:

Subs1<-subset(DATA, (!is.na(DATA[,2])) & (!is.na(DATA[,3])))

subset的第二个参数是一个与nrow(DATA)长度相同的逻辑向量,表示是否保留对应的行。

【讨论】:

  • 非常感谢@cogitovita
【解决方案2】:

na.omit 函数可以回答您的问题

 Subs1 <- na.omit(DATA[2:3])

[https://stat.ethz.ch/R-manual/R-patched/library/stats/html/na.fail.html]

【讨论】:

    【解决方案3】:

    这里是一个例子。 a,b ,c 是 3 个向量,其中 a 和 b 具有缺失值。 创建它们后,我使用 cbind 将它们绑定到一个矩阵中,然后您可以将其转换为数据框。

    最终结果是一个数据框,其中 3 列中有 2 列有缺失值。 因此,我们只需要保留具有完整案例的行。DATA[complete.cases(DATA), ] 用于仅保留每列中没有缺失值的这些行。 subset 对象是这些具有完整案例的行。

      a <- c(1,NA,2)
      b <- c(NA,1,2)
      c <- c(1,2,3)
      DATA <- as.data.frame(cbind(a,b,c))
      subset <-  DATA[complete.cases(DATA), ] 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2013-08-15
      • 2017-07-21
      • 2021-08-24
      • 2021-08-17
      相关资源
      最近更新 更多