我正在使用以下方法在数据帧中将变量从长格式转换为宽格式。但是,我正在寻找另一种方法,使用另一个包。 非常感谢任何帮助?
subject <- c(1:10, 1:10)
condition <- c(rep(1,10), rep(2,10))
value <- c(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
rating <- c(1, 3, 5, 2, 3, 5, 6, 7, 5, 3, 5, 7, 3, 6, 3, 5, 6, 7, 7, 8)
df <- data.frame(subject, condition, value, rating)
library(data.table)
df_wide <- dcast(setDT(df), subject ~ condition, value.var=c("rating", "value"))
答案 0 :(得分:1)
我们可以使用tidyverse
library(tidyverse)
df %>%
gather(key, val, value:rating) %>%
unite(cond, key, condition) %>%
spread(cond, val)
# subject rating_1 rating_2 value_1 value_2
#1 1 1 5 1 1
#2 2 3 7 2 2
#3 3 5 3 3 3
#4 4 2 6 4 4
#5 5 3 3 5 5
#6 6 5 5 1 1
#7 7 6 6 2 2
#8 8 7 7 3 3
#9 9 5 7 4 4
#10 10 3 8 5 5