Я хотел бы использовать функцию dcast (пакет reshape2) для возврата измененного фрейма данных, но он не работает.В моем примере:
#Data set
X<-c(804519.4,804519.6,804519.6,804519.4,804519.4,804519.4,804519.6,804519.6,804519.4,804519.4)
Y<-c(7673833,7673833,7673833,7673833,7673833,7673833,7673833,7673833,7673833,7673833)
band<-c("band1","band1","band1","band1","band1","band2","band2","band2","band2","band2")# My original data set are 31 bands
reflec<-c(9.608848,10.504454,8.648237,9.935091,11.282750,9.608848,10.504454,8.648237,9.935091,11.282750)
dummy<-1:10
RES3<-data.frame(X,Y,band,reflec,dummy)
RES3
X Y band reflec dummy
1 804519.4 7673833 band1 9.608848 1
2 804519.6 7673833 band1 10.504454 2
3 804519.6 7673833 band1 8.648237 3
4 804519.4 7673833 band1 9.935091 4
5 804519.4 7673833 band1 11.282750 5
6 804519.4 7673833 band2 9.608848 6
7 804519.6 7673833 band2 10.504454 7
8 804519.6 7673833 band2 8.648237 8
9 804519.4 7673833 band2 9.935091 9
10 804519.4 7673833 band2 11.282750 10
RES3<-as.data.frame(RES3)
colnames(RES3)<-c("X","Y","band","reflec","dummy")
dcast(RES3, X + Y + dummy ~ band,
fun.aggregate = length,
value.var="reflec")
Не работает, мой вывод:
X Y dummy band1 band2
1 804519.4 7673833 1 1 0
2 804519.4 7673833 4 1 0
3 804519.4 7673833 5 1 0
4 804519.4 7673833 6 0 1
5 804519.4 7673833 9 0 1
6 804519.4 7673833 10 0 1
7 804519.6 7673833 2 1 0
8 804519.6 7673833 3 1 0
9 804519.6 7673833 7 0 1
10 804519.6 7673833 8 0 1
Я ожидал:
X Y band1 band2
1 804519.4 7673833 9.608848 9.608848
2 804519.6 7673833 10.504454 10.504454
3 804519.6 7673833 8.648237 8.648237
4 804519.4 7673833 9.935091 9.935091
5 804519.4 7673833 11.282750 11.282750
Любой участник может помочь мне, потому чтомой исходный набор данных состоит из 31 полос как уровней, и я хотел бы преобразовать их в столбцы?Спасибо!