簡體   English   中英

如果有 NA,如何折疊 dataframe 的列?

[英]How can I collapse columns of a dataframe if there are NAs?

我想刪除以下數據框中的 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 中,使用na.omit

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

output

  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

在帶有unite + separatetidyr中:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM