我的数据如下:
Value Species
1 warb
1 warb
2 warb
3 tit
2 tit
3 tit
我希望它看起来像
warb tit
1 3
1 2
2 3
答案 0 :(得分:2)
在R基础上,我建议unstack
:
unstack(mydf)
# tit warb
# 1 3 1
# 2 2 1
# 3 3 2
由于这实际上是一个重塑问题,您还可以考虑添加一个基于“Species”的ID列(从我的“splitstackshape”包中轻松使用getanID
),然后重新整形为“宽”形式。
示例:
library(splitstackshape) ## mostly for getanID
dcast.data.table(getanID(mydf, "Species"),
.id ~ Species, value.var = "Value")
# .id tit warb
# 1: 1 3 1
# 2: 2 2 1
# 3: 3 3 2
reshape(getanID(mydf, "Species"),
direction = "wide", idvar = ".id",
timevar = "Species")
# .id Value.warb Value.tit
# 1: 1 1 3
# 2: 2 1 2
# 3: 3 2 3
答案 1 :(得分:1)
如果您的数据是
Value<-c(1,1,2,3,2,3)
Species<-c("warb","warb","warb","tit","tit","tit")
df<-data.frame(Value,Species)
试
result <- as.data.frame(tapply(df$Value,df$Species,list))