r - 在 R 中将列转为行标题?

标签 r dplyr

我有一个数据框

division | category
  A      |    tools
  A      |    work
  B      |    tools
  B      |    books

两列都是因子变量。 如何旋转类别列以便获得:

division | tools | books | work
   A         1               1
   B         1       1

我尝试使用 dplyr

wide <- df %>%
    spread(division, category)

但我仍然得到相同数量的行,但没有将它们折叠起来以打开每个分区?

最佳答案

一种选择是使用 transform 创建另一列 1 ,并将该列用作 value.vardcast

library(reshape2)
dcast(transform(df, ind=1), division~category, value.var='ind')

或者正如 @MichaelChirico 提到的,我们可以指定 fun.aggregatelength

dcast(df, division~category, length)

或者如果我们使用 dplyr/tidyr , mutate数据集来创建新列,然后 spread从“长”到“宽”。 spread始终需要包含要放入输出中的值的列 data.frame 。这在OP的示例中不存在,添加它可以解决问题。

library(dplyr)
library(tidyr)
df %>% 
   mutate(ind=1) %>% 
   spread(category,ind)

关于r - 在 R 中将列转为行标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32312852/

相关文章:

r - 使用 dplyr 总结逻辑数据帧

r - 使用 rowwise() 计算数据帧每一行中 NA 的数量的问题

r - 变异多个变量以创建多个新变量

r heatmap - stat_密度2d (ggmap) 与 addHeatmap ( Shiny 的传单)

r - 如何合并两个数据框并提取列的唯一组合?

r - 即使在将我的文件转换为因子后,为什么我的输出给出因子(0)30956 级别?

r - r 中的 Neuralnet 包结构简单,耗时很长,这里有什么问题吗?

R 内联 Markdown

r - 将 pmap 列表参数应用于嵌套在另一个函数中的函数

r - 使用 dplyr 到 group_by 并仅使用 if(没有 else)语句有条件地变异