我有一个数据集,大约有600只具有这种结构的动物:
anim <- c(1,1,1,1,1,2,2,2,2)
point <- c(1,2,3,4,6,3,4,5,6)
temp <- c(38.8,38.5,33.2,33.5,37.2,36.2,36.5,36.0,37.8)
mydf <- data.frame(anim,point,temp)
anim point temp
1 1 38.8
1 2 38.5
1 3 33.2
1 4 33.5
1 6 37.2
2 3 36.2
2 4 36.5
2 5 36.0
2 6 37.8
变量“点”包含动物的不同测量点(温度),我需要将这些测量点(1,2,3,4,5,6)作为新变量,使得1 = bel,2 =误码率,3 =乐,4 =重,5 = EY,6 = CR。请注意,某些点可能不会出现或测量,因此应放入NA。
mynewdf应如下所示:
anim bel ber le re ey cr
1 38.8 38.5 33.2 33.5 NA 37.2
2 NA NA 36.2 36.5 36.0 37.8
我希望我的问题足够明确,非常感谢任何帮助。
这是我实际数据集的摘录:
头(irpig中,n = 25)
头(irpig中,n = 25) 大坝动画点临时 1 1A0331 20584 1 37.9 2 1A0331 20584 2 37.7 3 1A0331 20584 3 34.3 4 1A0331 20584 4 35.8 5 1A0331 20584 6 37.6 6 1A0331 20585 2 38.7 7 1A0331 20585 4 36.4 8 1A0331 20585 6 38.0 9 1A0331 20586 1 39.0 10 1A0331 20586 2 39.8 11 1A0331 20586 3 37.9 12 1A0331 20586 4 38.0 13 1A0331 20586 6 38.5 14 1A0331 20587 1 39.3 15 1A0331 20587 2 38.9 16 1A0331 20587 3 39.4 17 1A0331 20587 4 38.6 18 1A0331 20587 6 39.4 19 1A0331 20588 1 39.6 20 1A0331 20588 2 39.2 21 1A0331 20588 3 38.9 22 1A0331 20588 4 38.0 23 1A0331 20588 6 39.6 24 1A0331 20589 1 38.1 25 1A0331 20589 2 38.7
巴兹
答案 0 :(得分:3)
这是一个解决方案。它使用Hadley Wickham的dcast
库中的reshape2
函数
mydf$point = as.factor(mydf$point)
levels(mydf$point) = c("bel", "ber", "le", "re", "ey", "cr")
library(reshape2)
dcast(mydf, anim ~ point)
anim bel ber le re ey cr
1 1 38.8 38.5 33.2 33.5 NA 37.2
2 2 NA NA 36.2 36.5 36 37.8