使用 Tidyr 的列名超出值

Column names out of values using Tidyr

我有以下数据框

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 但不知道如何保留 "event" 也没有管理新列的正确命名。我需要保留 "event",因为我需要进一步传输输出并再次使用 "event"。)

这是一个简单的解决方法:使用正确的列名创建一个附加列,然后使用它来传播数据:

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