我有以下数据框
> tmp
Genome value
1 a 1
2 b 2
3 c 3
4 a 3
5 b 3
6 c 2
我尝试过使用dcast,但没有做我想要的事情。 我想要下面的数据框。
a b c
1 1 2 3
2 3 3 2
> dput(tmp)
structure(list(Genome = structure(c(1L, 2L, 3L, 1L, 2L, 3L), .Label = c("a",
"b", "c"), class = "factor"), value = c(1, 2, 3, 3, 3, 2)), row.names = c(NA,
-6L), class = "data.frame")
答案 0 :(得分:1)
使用基数R
unstack(df, value ~ Genome)
a b c
1 1 2 3
2 3 3 2
答案 1 :(得分:0)
使用data.table
(简化了标记集):
library(data.table)
setDT(tmp)
tmpw <- tmp[, dcast(.SD, rowid(Genome) ~ Genome)][, !"Genome"]
tmpw
# a b c
# 1: 1 2 3
# 2: 3 3 2
或更简明地是Markus指出的:
基础R
的替代项(如果数据不规则,可以修改):
data.frame(split(tmp$value, tmp$Genome))
# a b c
# 1 1 2 3
# 2 3 3 2