여기 내 질문 : 3000 obs 데이터가 있습니다. 5000 기능, 3000 obs. 100.1,100.3,100.5,100.7과 같은 숫자 이름을가집니다. 나는 이름을 정수 변수로 변경하여 segs <-as.integer(names)
을 작성한 다음 segs
을 3000 특징을 모두 합산하는 요소로 사용하려고합니다. segs
의 길이는 300이므로 최종 데이터 프레임은 300 x 5000입니다. tapply
을 사용하여 하나의 변수에 대한 합계를 구할 수는 있지만 합계 5000 개를 얻으려면 for
을 사용해야합니다. 정말 시간이 많이 걸리는 문제이므로 R에서 이러한 문제를 해결하는 명확한 방법이 있는지 또는 이런 종류의 문제를 해결할 패키지가 있는지 알고 싶습니다.정수형으로 합계를 적용한 후 R
이 더러운 코드와 df
인 반면 df0
내가 원하는 데이터입니다 :
df <- data.frame()
for(i in 2:ncol(df0)-1){
temp <- tapply(df0[,i],df2$segs,sum)
df <- cbind(df,temp)
}
감사합니다!
=====
덕분에, 롤랜드, 데모 데이터로 표시됩니다은 다음과 같습니다
set.seed(42)
df0 <- data.frame(
X = rnorm(100,10,10),
Y = rnorm(100),
Z = rnorm(100))
df0$seq <- as.integer(df0$X)
이 매우 쉽고 매우 것 패키지 data.table로 효율적입니다. [재현 할 수있는 예제를 제공하십시오] (http://stackoverflow.com/a/5963610/1412059) 나는 당신에게 방법을 보여줄 것입니다. Btw. 당신은 루프에서 객체를 성장시키는 [추기경의 죄] (http://www.burns-stat.com/pages/Tutor/R_inferno.pdf)를 만들고 있습니다. – Roland
@Roland 귀하의 제안에 대해 감사드립니다. 질문에 간단한 데이터를 시뮬레이션합니다. 'df0'는 100 by 3,'df'는 35 by 3이 될 것입니다. – yufree