2013-07-03 3 views
0

다른 R 문제로 인해 여기에 붙어 있습니다.R은 그룹/서브 그룹에 따라 데이터 프레임을 요약합니다.

group <- c("X","X","X","X","Y","Y","Y","Y","Z","Z","Z","Z") 
subgroup <- c("A","B","A","B","A","B","A","B","A","B","A","B") 
obs1 <- c(rnorm(12,mean=10)) 
obs2 <- c(rnorm(12,mean=20)) 
e <- data.frame(group,subgroup,obs1,obs2) 

는 내가하고 싶은 것은이 같은 특정 그룹의 X 하위 그룹의 상호 작용에 대한 모든 관측치의 합을 보여주는 dataframe입니다 : I 2000을 통해 관찰과 50 열 다음과 같은 레이아웃의 데이터 프레임을 가지고 column1 = 그룹 column2 = 하위 그룹 column2 = obs1, column4 = 합계 obs2 ....

그룹, 하위 그룹 및 열 레이블은 보존되어야합니다. 시도 :

for(i in levels(e$group)){test[i,]<-as.matrix(Matrix::colSums(e[,3:4]))} 

하지만 이로 인해 오류가 발생합니다. 아마 당신은 내가 R 코딩으로 발전하지 않았 음을 알게 될 것입니다 :)

+0

http://stackoverflow.com/questions/17447120/subtracting-a-specific-condition-for-each-measure : 당신이 뭔가를 시도 할 수 있습니다이 경우

너에게. 그냥 함수를'sum'으로 대체하십시오. – intra

+0

아마도'aggregate (cbind (obs1, obs2) ~ group + subgroup, e, sum)'을 찾고 계신 겁니까? – A5C1D2H2I1M1N2O1R2T1

+0

@ Ananda Mahto : 이것은 내가 찾고있는 거의 것이었지만이 예제에서 e [, 3 : 4]와 같은 특정 범위의 관찰을 사용하도록 R을 어떻게 말합니까? 'all.obs <-colnames (e [, 3 : 4])'를 시도한 다음 cbind (obs1, obs2) 대신이 벡터를 사용했지만 작동하지 않았습니다. – user2386786

답변

0

귀하의 의견에 따라, 귀하는 그러한 집계를 신속하고 간단한 구문으로 처리 할 수있는 "data.table"패키지를 살펴볼 수 있습니다. 이전 현재와 매우 관련 질문

library(data.table) 
E <- data.table(e) 
E[, lapply(.SD, sum), by = c("group", "subgroup"), .SDcols = 3:4] 
+0

고마워요, 그 일을합니다. – user2386786

+0

@ user2386786, 문제가 없습니다. R에서 역시 이렇게하는 방법이 있습니다 (예를 들어,'aggregate')하지만,이 경우에는 "data.table"접근법이 가장 직관적이라고 생각합니다. – A5C1D2H2I1M1N2O1R2T1