我有一个数据框
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.var
在dcast
library(reshape2)
dcast(transform(df, ind=1), division~category, value.var='ind')
或者正如 @MichaelChirico 提到的,我们可以指定 fun.aggregate
如length
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/