【问题标题】:Combine columns with NAs to the new column and attach it existing df将带有 NA 的列合并到新列并将其附加到现有的 df
【发布时间】:2018-09-23 16:29:44
【问题描述】:

我有一个包含几列的数据框,特定两列的标题如下所示(总共有几千行):

  corprsd1 corprsd2
2        1       NA
3       NA        0
4       NA        0
5        1       NA
6        1       NA
7       NA        0

由于一列中的每一行 NA 始终对应于第二列中的 0 或 1,我想将这些行合并为 1 并将其附加到当前数据帧,以获得类似的结果:

  corprsd1 corprsd2 corcombined
2        1       NA       1
3       NA        0       0
4       NA        0       0
5        1       NA       1
6        1       NA       1
7       NA        0       0

我想它可以通过循环或某些特定功能来完成 - 你能告诉我最好的解决方案吗? 我想某些函数会最快,但循环应该更灵活(即我可以更改组合列的条件)。

【问题讨论】:

  • 查看?rowSums并使用na.rm=TRUE

标签: r dataframe


【解决方案1】:

更简单:

df <- data.frame(
  corprsd1 = c(1, NA, NA, 1, 1, NA),
  corprsd2 = c(NA, 0, 0, NA, NA, 0)
)

df$combined <- rowSums(df, na.rm = T)

产生预期的输出:

  corprsd1 corprsd2 combined
1        1       NA        1
2       NA        0        0
3       NA        0        0
4        1       NA        1
5        1       NA        1
6       NA        0        0

【讨论】:

    【解决方案2】:

    你不需要循环。使用is.na 和rowSums 会更快。

    corprsd1 <- c(1, NA, NA, 1, 1, NA)
    corprsd2 <- c(NA, 0, 0, NA, NA, 0)
    table <- cbind(corprsd1, corprsd2)     # generate your original table without the rownames of 2:7
    table[is.na(table)] <- 0     # replace NAs with 0s
    table2 <- cbind(table, rowSums(table))     # generates new table with rowSums
    colnames(table2) <- c("corprsd1", "corprsd2", "corcombined")
    rownames(table2) <- c(2:7)
    table2
    

    哪个产生

      corprsd1 corprsd2 corcombined
    2        1       NA           1
    3       NA        0           0
    4       NA        0           0
    5        1       NA           1
    6        1       NA           1
    7       NA        0           0
    

    【讨论】:

    • 是的,实际上这一行也可以完成这项工作:p1$corpress
    猜你喜欢
    • 2018-02-27
    • 2020-03-30
    • 2020-02-23
    • 2021-03-02
    • 1970-01-01
    • 2021-09-22
    • 2018-02-28
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多