【问题标题】:how to remove Some NA with respect of 2 groups [duplicate]如何删除 2 组的一些 NA [重复]
【发布时间】:2019-09-17 22:41:19
【问题描述】:

假设我有

    HH    PP    mode
    1      1     2
    1      1     NA
    1      1     NA
    1      2     2
    1      2     2
    1      3     NA
    1      3    NA
    2      1     2
    2      1     NA
    2      2     NA
    2      2     NA

第一列是家庭索引,第二列是每个家庭的人数。我想删除每个家庭中每个人的模式为 NA 的行。例如,在第三人的第一个家庭模式列中都是 NA 所以我想删除它。第二个家庭的第二个人也一样

输出:

    HH    PP    mode
    1      1     2
    1      1     NA
    1      1     NA
    1      2     2
    1      2     2
    2      1     2
    2      1     NA

【问题讨论】:

  • 你有什么尝试吗?这也是重复的...
  • 我试图做 df %>% group_by(HH,PP) %>% filter(is.na(mode)) 但它没有给出我想要的。我该如何解决?

标签: r dataframe


【解决方案1】:
library(data.table)
dt[, .SD[ ( !all( is.na( mode ) ) ) ], by= .( HH, PP ) ][]

   HH PP mode
1:  1  1    2
2:  1  1   NA
3:  1  1   NA
4:  1  2    2
5:  1  2    2
6:  2  1    2
7:  2  1   NA

样本数据

dt <- fread("    HH    PP    mode
    1      1     2
    1      1     NA
    1      1     NA
    1      2     2
    1      2     2
    1      3     NA
    1      3    NA
    2      1     2
    2      1     NA
    2      2     NA
    2      2     NA")

【讨论】:

  • [.data.frame(WithDriving, , .SD[(!all(is.na(mode.car)))] 中的错误,by = .(SAMPN, : 未使用的参数(by = .( SAMPN, PERNO))
  • dt 必须属于 data.table.. 类。请参阅示例数据。
  • 我将 as.data.table 用于我的数据
  • 不能说..它正在处理提供的示例数据...先尝试
猜你喜欢
  • 1970-01-01
  • 2016-02-10
  • 2021-10-06
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 2018-05-07
  • 1970-01-01
  • 2021-12-30
相关资源
最近更新 更多