I am trying to pivot pairs of key-value variables using tidyr:spread()
.
id <- c(0,1,2,3,4,5,6,7,8,9)
key1 <- c("a", "a", "b", "b", "c","a", "a", "b", "b", "c")
val1 <- c(1,2,3,1,2,3,1,2,3,1)
key2 <- c("d",NA,NA,NA,"e","d","d",NA,"b",NA)
val2 <- c(1,NA,NA,NA,2,3,NA,NA,3,NA)
key3 <- c("x",NA,NA,NA,"e","d",NA,NA,NA,NA)
val3 <- c(0,NA,NA,NA,NA,3,1,NA,NA,NA)
df = data.frame(id, key1, val1, key2, val2, key3, val3)
library(tidyr)
c1 <- spread(df, key1, val1, fill = 0, convert = FALSE)
c2 <- spread(c1, key2, val2, fill = 0, convert = FALSE)
c3 <- spread(c2, key3, val3, fill = 0, convert = FALSE)
while running the spread(), i get the following error:
Error in [.data.frame(data, setdiff(names(data), c(key_col, value_col))) : undefined columns selected
It makes me think that the problem is in the values and not in the variable names as the error implies, any ideas what to look for?
on the same token, is there a more syntax efficient way to spread multiple pair of key-value variables?