我有以下数据框
df <- data.frame(event=c("A", "B", "C"), value=c(200,300,400))
df
event value
1 A 200
2 B 300
3 C 400
想要
event A_value B_value C_value
1 A 200 NA NA
2 B NA 300 NA
3 C NA NA 400
你有解决方案吗?
非常感谢。
(我尝试过tidyr :: spread但不知道如何保留“事件”,也没有管理新列的正确命名。我需要保留“事件”,因为我需要进一步管道输出再次使用“事件”。)
答案 0 :(得分:0)
这是一个简单的解决方法:使用正确的列名创建一个额外的列,然后使用它来传播数据:
library(dplyr); library(tidyr)
mutate(df, key = paste(event, "value", sep = "_")) %>%
spread(key, value)
# event A_value B_value C_value
#1 A 200 NA NA
#2 B NA 300 NA
#3 C NA NA 400