R 基于另一列将单列转换为多列

R 基于另一列将单列转换为多列,r,tidyr,R,Tidyr,我有一个整洁的数据框架,每行有一个术语和主题。看起来是这样的: num_topic, term 1, blue 1, green 2, dog 2, cat 为了便于阅读,我想把每个主题安排在一个单独的专栏中 topic1, topic2 blue, dog green, cat 这看起来很直观,但我不知道怎么做。这与链接问题不同,因为每个术语都没有唯一的标识符。每个主题都有一个术语列表。以下内容如何。 注意:这假设每个num_topic组的条目是“有序”的,即蓝色的属于狗的,绿色的属于猫的

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

num_topic, term
1, blue
1, green
2, dog
2, cat
为了便于阅读,我想把每个主题安排在一个单独的专栏中

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

以下内容如何。 注意:这假设每个
num_topic
组的条目是“有序”的,即
蓝色的
属于
狗的
绿色的
属于
猫的
,依此类推

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

df这叫做数据透视谢谢,非常接近!但问题是,我只想要主题栏。主题中的每个术语都没有唯一的标识符。@Adam_G那么您能添加一个临时标识符吗?e、 类似于
df%%>%groupby(num\u topic)%%>%mutate(id=seq(1,n())%%>%ungroup()%%>%spread(num\u topic,term)%%>%select(-id)
或使用
unstack(df,term~num\u topic)
@akrun your win;-)绝对是最短的解决方案!