2014-11-24 2 views
0

집합을 사용하여 행렬 집합에 어떤 조작을 적용하려면 내 데이터 프레임의 한 열인 customer_id으로 그룹화하십시오. df.반환 매트릭스 때 R에 집계 사용

예를 들어 다른 customer_id에 해당하는 df의 하위 집합을 가져 와서 이러한 하위 집합에 일부 열을 추가하고 모두 반환하려고합니다.

파이썬에서는 groupby를 사용하고 적용 할 것입니다.

R에서 어떻게 할 수 있습니까? 오류가 같은 보인다 내가 추측 kmeansfunction에서 오는

gr_TILPS = aggregate(df,by=list(df[,"customer_id"]),FUN=kmeansfunction) 

Error in TILPSgroup$hour : $ operator is invalid for atomic vectors 

:

kmeansfunction = function(dfgroup){ 

Hour =dfgroup$hour 
Weekday =TILPSgroup$WeekdayPrime 
x <- cbind(Hour, Weekday) 
colnames(x) <- c("x", "y") 
(cl <- kmeans(x, 2)) 
clusters = cl$cluster 
origclusters = as.factor(clusters) 
dfgroup = cbind(dfgroup,origclusters) 

return(dfgroup) 

}

답변

2

aggregate을 동일한 기능을 적용 같은

내가 쓴 코드가 보인다 복수 단일 열로. 당신이 열의 앙상블을 연구하고 싶다면,이 패러다임을 사용하십시오 : lapply(split(df,group),function);

이 시도 : 'dplyr'

gr_TILPS <- lapply(split(df, df[,"customer_id"]), 
        FUN=kmeansfunction) 

은 실험 패키지에 일부 유사성이있을 수 있습니다 파이썬처럼 소리. 어떤 의미에서 aggregate은 블록 내에서 열 중심 처리 전략 일 뿐이며, 차단 기준으로 정의 된 전체 데이터 행에 관심이있는 경우 lapply(split,),) 전략이 ​​더 적합합니다. 나중에 결과를 다시 행 바인딩하려는 경우 항상 do.call(rbind, res_from_lapply)을 사용할 수 있습니다.