【问题标题】:How can I collapse columns of a dataframe if there are NAs?如果有 NA,如何折叠数据框的列?
【发布时间】:2022-12-17 12:53:38
【问题描述】:

我想删除以下数据框中的 NA,以便留下 3 列而不是 4 列。列的名称无关紧要。

structure(list(Practical1 = c("65", "85", NA, "60", NA), Practical2 = c("55", 
"75", "100", NA, "35"), Practical3 = c(45.45, 50, 86.36, 40, 
72.73), Practical4 = c(NA, NA, "92", "79", "71")), class = "data.frame", row.names = c(NA, 
-5L))

我会得到看起来像这样的东西:

pracA, pracB, pracC
65, 55, 45.45,
85, 75, 50,
100, 86.36, 92,
60, 40, 79,
35, 72.73, 71

【问题讨论】:

    标签: r dataframe tidyverse


    【解决方案1】:

    在 base R 中,na.omit

    dat <- as.data.frame(t(apply(dat, 1, na.omit)))
    colnames(dat) <- paste0("prac", 1:3)
    

    输出

      prac1 prac2 prac3
    1    65    55 45.45
    2    85    75 50.00
    3   100 86.36    92
    4    60 40.00    79
    5    35 72.73    71
    

    tidyrunite+separate

    library(tidyr)
    unite(dat, "a", starts_with("Practical"), na.rm = TRUE) %>% 
      separate(a, into = str_c("prac", 1:3), sep = "_")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-29
      • 2022-10-13
      • 1970-01-01
      • 2017-11-03
      • 2021-08-20
      • 1970-01-01
      • 2014-04-24
      相关资源
      最近更新 更多