【发布时间】:2019-09-29 12:54:54
【问题描述】:
我有一个这样的数据集:
df <- data.frame(origin = c('A', 'B', 'C'), freq = c(100,3000,200))
origin freq
1 A 100
2 B 3000
3 C 200
我想把它转换成这样的结构:
A B C
100 3000 200
这样我就可以 cbind 将其添加到现有数据框
-
tidyr::spread()
我尝试使用tidyr::spread但这将要求行具有唯一的 ID。我可以这样做,但这不会给我想要的结果:> df %>% mutate(id = row_number()) %>% spread(origin, freq) id A B C 1 1 100 NA NA 2 2 NA 3000 NA 3 3 NA NA 200 -
t()
我可以转置数据框,但是它会将origin转换为行而不是列名。当然,我可以通过手动设置列名来编辑它,但这似乎很麻烦。as.data.frame(t(df)) V1 V2 V3 origin A B C freq 100 3000 200
【问题讨论】:
-
我没有得到同样的结果,当我运行 rownames(data.frame(t (df))) origin 和 freq 是 rownames