【问题标题】:Make single column into multiple columns based on another column [duplicate]基于另一列将单列变为多列[重复]
【发布时间】:2017-11-17 02:58:01
【问题描述】:

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

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

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

topic1, topic2
blue, dog
green, cat

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

【问题讨论】:

  • 这称为枢轴
  • 谢谢,非常接近!但问题是,我只想要主题列。主题中的每个术语实际上没有唯一标识符。
  • @Adam_G 你能添加一个临时标识符吗?例如类似df %>% group_by(num_topic) %>% mutate(id = seq(1, n())) %>% ungroup() %>% spread(num_topic, term) %>% select(-id)

标签: r tidyr


【解决方案1】:

以下如何。 请注意,这假设每个 num_topic 组的条目是“按顺序”排列的,即 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 绑定在一起。

【讨论】:

  • 或使用unstack(df, term~num_topic)
  • @akrun 你赢了;-) 绝对是最短的解决方案!
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 2012-12-28
相关资源
最近更新 更多