2017-11-17 11 views
-1

整然としたデータフレームがあり、行ごとに用語とトピックが1つあります。これはかなり直感的なようだが、私はそれを行う方法を見つけ出すことはできません別の列に基づいて単一の列を複数の列にする

topic1, topic2 
blue, dog 
green, cat 

人間読みやすくするために、

num_topic, term 
1, blue 
1, green 
2, dog 
2, cat 

私は別の列に各トピックを手配したいと思います:それはこのようになります。リンクされた質問と同じではありません。なぜなら、各用語に固有の識別子がないからです。各トピックの用語リストがあります。

+0

これはピボット – Keith

+0

と呼ばれていますありがとうございます、それは非常に近いです!しかし、問題は、私はトピックの列がほしいということです。トピックの各用語に固有の識別子はありません。 –

+0

@Adam_G一時識別子を追加できますか?例えばungroup()%>%spread(num_topic、term)%>%select(-id)のようなものです。 ' –

答えて

2

次のようになります。 これは、num_topicグループごとのエントリが「順番に」あることを前提としています。つまり、bluedogに属し、​​はcatに属します。

df <- read.csv(text = 
    "num_topic,term 
    1,blue 
    1,green 
    2,dog 
    2,cat"); 

df <- as.data.frame(sapply(split(df, df$num_topic), function(x) x$term)); 
df; 
#  1 2 
#1 blue dog 
#2 green cat 

説明:一緒にnum_topicに分割され、バインド列term

+2

または' unstack(df、term〜num_topic) 'を使用してください – akrun

+1

@akrunあなたは間違いなく最短の解決に勝ちます! –

関連する問題