2017-02-28 45 views
0

值我有以下的數據幀列名了使用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」,因爲我需要管輸出進一步並用「事件」再次)

回答

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 
+0

太謝謝你了。 – feinmann

+0

您現在將如何移除「事件」列並摺疊NA值?你明白我的意思嗎?我嘗試使用聚合,它的工作原理,但我看起來很醜。有沒有更優雅的解決方案?謝謝 – feinmann

+0

我不明白你的意思 –