合并R行,删除NA

cvxl0en2  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(90)

我在R中有一个类似于

data.frame(ID = c(1,1), a = c(1, NA), b = c(NA, 2), c = c(NA, 3))

字符串
所以行是互斥的。也不是说有些列是字符。
我需要的是每个ID只有一行。
我如何才能做到这一点?

qnakjoqk

qnakjoqk1#

df <- data.frame(ID = c(1,1), a = c(1, NA), b = c(NA, 2), c = c(NA, 3))

suppressPackageStartupMessages(library(dplyr))

df %>% 
  summarise(across(everything(), \(x) x[!is.na(x)]),
            .by = ID)
#>   ID a b c
#> 1  1 1 2 3

字符串
创建于2023-10-31使用reprex v2.0.2

m1m5dgzv

m1m5dgzv2#

希望一个基本的R技巧可以帮助

> aggregate(. ~ ID, df, na.omit, na.action = na.pass)
  ID a b c
1  1 1 2 3

字符串

> list2DF(as.list(colMeans(df, na.rm = TRUE)))
  ID a b c
1  1 1 2 3


> data.frame(t(colMeans(df, na.rm = TRUE)))
  ID a b c
1  1 1 2 3

6bc51xsx

6bc51xsx3#

我们可以discardNAs,在一个操作中分组.byID

library(dplyr)
library(purrr)

df |> 
    summarise(across(everything(),
                     \(x) discard(x, is.na)),
              .by = ID)
  a b c
1 1 2 3

字符串

相关问题