Merge rows within a dataframe by a key

dataframe, r

Solution

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

Problem

If I have a dataframe with a key column and data columns, like this ``` 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 ``` And want a dataframe that merges the rows by name, overwriting NAs whenever possible, like so ``` key var1 var2 "Jane" "a" "b" "Sam" "a" "b" "Mary" "c" "d" ``` How can I do this?

Original source