如果我有一个包含键列和数据列的数据框,就像这样
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)
我怎样才能做到这一点?
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)