我有一個資料框:
Number Superclass Class Subclass
<dbl> <chr> <chr> <chr>
1 3 NA Class: Benzene and substituted derivatives NA
2 3 Superclass: Benzenoids NA NA
3 4 Superclass: Painkiller NA NA
我想展平資料框并合并,以便在同一行上有超類、類和子類:
Number Superclass Class Subclass
<dbl> <chr> <chr> <chr>
1 3 Superclass: Benzenoids Class: Benzene and substituted derivatives NA
2 4 Superclass: Painkiller NA NA
我試過了
df%>%
group_by(Number) %>%
summarise_all(na.omit)
但它只包括所有三個類都存在的行,并洗掉任何只有超類或超和類的行
uj5u.com熱心網友回復:
在按“數字”分組后summarise across(_all/_at/_if不推薦使用across)其余列(everything()),檢查if all值是NA,然后獲取first元素paste或非 NA 元素toString(逗號分隔值)
library(dplyr)
df%>%
group_by(Number) %>%
summarise(across(everything(), ~ if(all(is.na(.x))) first(.x)
else toString(.x[complete.cases(.x)])))
-輸出
# A tibble: 2 × 4
Number Superclass Class Subclass
<int> <chr> <chr> <lgl>
1 3 Superclass: Benzenoids Class: Benzene and substituted derivatives NA
2 4 Superclass: Painkiller <NA> NA
資料
df <- structure(list(Number = c(3L, 3L, 4L), Superclass = c(NA, "Superclass: Benzenoids",
"Superclass: Painkiller"), Class = c("Class: Benzene and substituted derivatives",
NA, NA), Subclass = c(NA, NA, NA)), class = "data.frame", row.names = c("1",
"2", "3"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/529072.html
標籤:r数据框
