2015-01-16 6 views
3

데이터 프레임이 있습니다. 다른 목록을 기반으로 한 열을 집계하고 싶습니다.R : 특정 조건에 따라 데이터 프레임 집계

df<-data.frame(X=c("a", "b", "c", "d"), Y=c(0.5, 0.4, 0.01, 0.09)) 
X  Y 
a  0.5 
b  0.4 
c  0.01 
d  0.09 

l<-c("a", "c", "d") 

l은 함께 그룹화해야하는 목록입니다. 그래서 여기에 l 안에있는 df$X에있는 모든 요소들을 그룹으로 묶고 싶습니다.

My desired result is: 
X  Y 
a' 0.6 
b  0.4 

어떻게하면 좋을까요?

감사합니다.

답변

4

X 값을 동일한 그룹화 변수로 "일시적으로"변경 한 다음 집계 할 수 있습니다. 여기 임의로 또한 aggregate() 통화 within()의 사용에 "a"

aggregate(Y ~ X, within(df, X <- replace(X, X %in% l, l[1])), sum) 
# X Y 
# 1 a 0.6 
# 2 b 0.4 

하나 개 상승 여력 될 일이있는 l[1]을 선택 원래 df가 변경되지 것입니다.

1

data.table

library(data.table) 
df1 <- copy(df) 
setkey(setDT(df1), X)[l, X:='a'][, list(Y=sum(Y)), X] 
# X Y 
#1: a 0.6 
#2: b 0.4 
를 사용하는 옵션
관련 문제