1
데이터 프레임의 열에서 그룹 단위 평균을 계산하고 뺄 수있는 병렬화 가능 코드 (plyr
및 doMC
)를 작성하려고합니다. plyr
구문을 올바르게 수정하는 데 어려움을 겪고 있습니다. 여기 plyr 또는 행렬 대수를 사용하여 열에서 그룹 단위 평균 빼기
data = data.frame(x = rnorm(100),y = rnorm(100),ID = round(runif(100)*10))
data = data[with(data,order(ID)),]
dm = matrix(rep(NA,nrow(data)*(ncol(data)-1)),nrow(data),(ncol(data)-1))
for (i in 1:(ncol(data)-1)){
m = summaryBy(data[,i]~ID,data=data,fun=mean)
d = data.frame(data[,i],ID=data$ID)
a = merge(d,m,by="ID")
dm[,i] = a[,2]-a[,3]
}
하지만 ddply 사용하여 데이터의 열 이름으로 그것을 깰하려고, 그것은 나에게 오류 메시지를 제공합니다. 다음은 제 작동하지 않는 코드입니다.
dmf = function(i){
m = summaryBy(data[,i]~ID,data=data,fun=mean)
d = data.frame(data[,i],ID=data$ID)
a = merge(d,m,by="ID")
dm = a[,2]-a[,3]
as.data.frame(dm)
}
dm = ddply(.data=data,.fun = dmf,.variables = colnames(data))
>Error in .subset(x, j) : invalid subscript type 'list'
아무도 해결책이 없습니까?
다른 방법으로, 행렬로 행할 수 있다면, 나보다 더 나은 행렬 직감을 가진 누군가로부터의 그런 종류의 솔루션에 크게 감사 할 것입니다.