【问题标题】:How to Segregate matching data into one and unmatched data into another data frame in R如何在R中将匹配数据分离成一个数据并将不匹配数据分离成另一个数据帧
【发布时间】:2020-08-26 14:26:19
【问题描述】:

我有以下数据,

R1 <- c("15515","5156",NA,NA, "2857")
RC <- c("ACC","ZXC","ACC","QWZ","ACC")
R2 <- c(515,5156.11-,415-,1455-,886)
df <- data.frame(R1,RC,R2, stringsAsFactors = F)

我的条件是,R1 不应该包含 NA 并且 RC 只是 ACC,要捕获到 df1 并将剩余数据放入另一个数据框 df2。

我尝试做子集但无法获得所需的输出。

这可以在一个实例中创建这样两个数据帧(df1 和 df2)吗?

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    您可以将这两个条件(!is.na(df$R1)df$RC == "ACC")与&amp; 结合起来,并使用结果一次,因为它是df 的子集,另一次使用! 否定。

    i <- !is.na(df$R1) & df$RC == "ACC"
    df1 <- df[i,]
    df2 <- df[!i,]
    df1
    #     R1  RC  R2
    #1 15515 ACC 515
    #5  2857 ACC 886
    df2
    #    R1  RC       R2
    #2 5156 ZXC 5156.11-
    #3 <NA> ACC     415-
    #4 <NA> QWZ    1455-
    

    如果您在df$RC 中有NA

    i <- is.na(df$R1) | (is.na(df$RC) | df$RC != "ACC")
    df1 <- df[!i,]
    df2 <- df[i,]
    

    【讨论】:

    • 但它也创建了不必要的 NA 行
    • 所以 df2 应该也没有 NA?
    • 由于我的实际数据很大,我在两个数据帧中都出现了杂散的 NA 行
    • 第一个代码绝对没问题,但是随着预期的数据,我得到了仅包含 NA 的额外行
    • 哦,那么您在RC 中也有NA。请参阅该案例的更新。
    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2023-03-25
    • 2021-05-12
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多