通过键合并数据帧中的行

sus*_*sus 5 r dataframe

如果我有一个包含键列和数据列的数据框,就像这样

df <- cbind(key=c("Jane", "Jane", "Sam", "Sam", "Mary"), var1=c("a", NA, "a", "a", "c"), var2=c(NA, "b", NA, "b", "d"))

key    var1 var2
"Jane" "a"  NA  
"Jane" NA   "b" 
"Sam"  "a"  NA
"Sam"  "a"  "b" 
"Mary" "c"  "d" 
"Mary" "c"  NA
Run Code Online (Sandbox Code Playgroud)

并且想要一个按名称合并行的数据帧,尽可能覆盖NAs,就像这样

key    var1 var2
"Jane" "a"  "b"
"Sam"  "a"  "b"
"Mary" "c"  "d"
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Ric*_*rta 6

library(data.table)
dtt <- as.data.table(df)

dtt[, list(var1=unique(var1[!is.na(var1)])
         , var2=unique(var2[!is.na(var2)]))
    , by=key]

    key var1 var2
1: Jane    a    b
2: Mary    c    d
3:  Sam    a    b
Run Code Online (Sandbox Code Playgroud)

  • 太棒了!并感谢您在我的示例中捕获错误:( (2认同)