根据另一列将单列变成多列

Make single column into multiple columns based on another column

我有一个整洁的数据框,每行一个术语和一个主题。它看起来像这样:

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

为了便于阅读,我想将每个主题安排在单独的栏中

topic1, topic2
blue, dog
green, cat

这看起来很直观,但我不知道该怎么做。它与链接的问题不同,因为每个术语都没有唯一标识符。每个主题只有术语列表。

下面的怎么样。 请注意,这假设每个 num_topic 组的条目是 "in order",即 blue 属于 doggreen 属于 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 绑定在一起。