2017-09-25 7 views
1
私はこのような何かからRにデータフレームを変換する必要があり

トランスポーズRデータフレームとは、複数の列で発生する値を連結

id past  present future 
id1 A  A  B 
id2 B     C 
id3 A  C   
id4 B   B  A 

この目的のために:

id A    B    C 
id1 past, present future 
id2     past   future 
id3 past       present 
id4 future   past, present 

私が遊んで試してみました周りにはダンスがありますが、私はRにはかなり新しいので、必要なものに近いものを手に入れることができませんでした。何か他のものを使っているべきですか?

ありがとうございます!

答えて

1

我々は、gatherそれを「ID」、「ヴァル」でグループ化された「長い」形式にすることができるpaste「キー」要素一緒にspreadそれ

library(tidyverse) 
gather(df1, key, val, -id) %>% 
     filter(val !="") %>% 
     group_by(id, val) %>% 
     summarise(key = toString(key)) %>% 
     spread(val, key, fill = "") 
# A tibble: 4 x 4 
# Groups: id [4] 
#  id    A    B  C 
# * <chr>   <chr>   <chr> <chr> 
#1 id1 past, present  future   
#2 id2      past future 
#3 id3   past    present 
#4 id4  future past, present   
「ワイド」に