【问题标题】:Remove rows with missing data in select columns, only if they don't have missing data in all columns (preferably use complete.cases)删除在SELECT列中删除缺失数据的行,只有在所有列中没有缺少数据时,
【发布时间】:2020-02-02 20:22:39
【问题描述】:

所以我试图删除在某些列中缺少数据的行,但不是在所有列中都缺少数据的行。

使用rowSums!is.na() 在我的数据集底部给了我1000 行NA。这里的最佳答案提供了一种使用 complete.cases 解决我的问题的好方法:

Remove rows with all or some NAs (missing values) in data.frame

data_set1 <- data_set1[complete.cases(data_set1[11:103]), ]

但是,这只允许我删除指定列中缺少任何数据的行。我正在努力让 complete.cases 与 rowSums 一起玩,并阻止它删除所有缺失数据的行。

非常感谢任何建议!

【问题讨论】:

    标签: r na


    【解决方案1】:

    尝试使用rowSums 喜欢:

    cols <- 11:103
    vals <- rowSums(is.na(data_set1[cols]))
    data_set2 <- data_set1[!(vals > 0 & vals < length(cols)), ]
    

    或者complete.casesrowSums

    data_set1[complete.cases(data_set1[cols]) | 
             rowSums(is.na(data_set1[cols])) == length(cols) , ]
    

    用可重现的例子,

    df <- data.frame(a = c(1, 2, 3, NA, 1), b = c(NA, 2, 3, NA, NA), c = 1:5)
    cols <- 1:2
    
    vals <- rowSums(is.na(df[cols]))
    df[!(vals > 0 & vals < length(cols)), ]
    
    #   a  b c
    #2  2  2 2
    #3  3  3 3
    #4 NA NA 4
    

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2020-08-19
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多