使用Tidyr的值列值

时间:2017-02-28 15:52:58

标签: r 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但不知道如何保留“事件”,也没有管理新列的正确命名。我需要保留“事件”,因为我需要进一步管道输出再次使用“事件”。)

1 个答案:

答案 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