【问题标题】:How to remove rows with NAs from two dataframes based on NAs from one?如何从一个基于 NA 的两个数据帧中删除具有 NA 的行?
【发布时间】:2019-07-04 16:01:33
【问题描述】:

我正在尝试从 df2 中删除 df1 中与 NA 相同的行。 例如。

df1
    A
1   1
2   NA
3   7
4   NA


df2
    A B C D
1   2 4 7 10
2   3 6 1 3
3   9 5 1 3
4   4 9 2 5

预期结果:

df1
    A
1   1
3   7


df2
    A B C D
1   2 4 7 10
3   9 5 1 3

我已经尝试过……

newdf <- df2[-which(rowSums(is.na(df1))),]

noNA <- function(x) { x[!rowSums(!is.na(df1)) == 1]}
NMR_6mos_noNA <- as.data.frame(lapply(df2, noNA))

noNA <- function(x) { x[,!is.na(df1)]}
newdf3 <- as.data.frame(lapply(df2, noNA))

【问题讨论】:

    标签: r dataframe na


    【解决方案1】:

    我们可以使用is.na 创建一个逻辑条件,并使用它来子集“df1”和“df2”的行

    i1 <- !is.na(df1$A)
    df1[i1, , drop = FALSE]
    #  A
    #1 1
    #3 7
    
    df2[i1,]
    #   A B C  D
    # 1 2 4 7 10
    #3 9 5 1  3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 2016-10-17
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多