2016-05-31 4 views
0

집계 함수에 대한 다음 소스 코드와 같이 왜 여기에 list function()을 사용해야하는지 이해할 수 없습니다. 대신에 그룹화 할 필요가있는 하나의 열을 사용하여이를 대체하려고합니다. 그리고 저는 왜 'train [Sales! = 0]'과 같은 데이터 세트를 두 번 사용하는지 모르겠습니다. 두 번째 데이터 집합 매개 변수로 다른 데이터 집합을 사용하면 어떻게됩니까? 나는 그것이 가능한 높은 실수가 될 수있는 변화를 가져올 것이라고 생각한다.집계 함수가 직관적이지 않습니다

aggregate(train[Sales != 0]$Sales, 
       by = list(train[Sales != 0]$Store), mean) 

아마도 이것이 잘못된 사용 사례라고 말할 수 있습니다. 그러나 나는 R Documentation에서이 소스 코드를 보았다.

## Compute the averages for the variables in 'state.x77', grouped 
## according to the region (Northeast, South, North Central, West) that 
## each state belongs to. 
aggregate(state.x77, list(Region = state.region), mean) 

내 질문을 읽어 주셔서 감사합니다.

+2

코드가 잘못되었을 수 있습니다. 'train '이 행렬 또는 data.frame 인 경우이 명령'train [Sales! = 0]'은 이미 오류를 표시합니다 ('undefined columns selected'). 그럼에도 불구하고'list()'함수를 피하기 위해'aggregate (Sales ~ Store, data = train [Sales! = 0,], mean)'할 수 있습니다. 'state.x77'은 이미 첨부 된 데이터 세트이므로, 예제 에서처럼 사용할 수 있습니다. – Jimbou

답변

1

우선, 집계 함수의 구문이 마음에 들지 않으면 dplyr 패키지를 살펴볼 수 있습니다. 구문이 좀 더 쉬울 수도 있습니다. 두 번째 인수는 단지리스트가 될 것으로 예상된다

  1. , 그래서 당신은 여러 변수를 추가 할 수 있습니다

    귀하의 질문에 대답합니다.
  2. train[Sales != 0]을 두 번 사용해야합니다. 그렇지 않으면 첫 번째 및 by 인수가 서로 다른 인덱스를 나타 내기 때문입니다.

자료 R-코드 :

train %>% 
    filter(Sales != 0) %>% 
    group_by(Store) %>% 
    summarise_each(funs(mean)) 

당신이 응축 때문에 나는 summarise_each 사용을 참조하십시오 : dplyr

trainSales <- train[Sales != 0] 
aggregate(trainSales$Sales, by = list(trainSales$Store), mean) 

당신이 뭔가를 할 수 있습니다 당신은 또한 최초의 부분 집합을 만들 수 하나의 행에 대한 데이터 집합이지만, 물론 모든 행을 그대로 남기는 작업을 수행 할 수도 있습니다 (이 경우 do 사용).

+0

'aggregate'에는보다 편리한 구문을 사용하는 훌륭한 수식 메소드가 있습니다. – Roland

+0

@ 재퍼 감사. 그러나이 함수는 데이터 집합, 집계 할 열, 그룹화 할 참조 할 열 및 집계 함수를 사용하면 더 좋을 것이라고 생각합니다. – verystrongjoe

+0

@verystrongjoe'dplyr'과 함께 예제를 추가했습니다. 더 직관적 일 수 있습니까? 구문에 대해 더 자세히 알고 싶다면 [dplyr 소개] (https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html)를 확인하십시오. 그것은 당신이 그것의 걸림 새를 얻을 때 정말로 편리합니다. – Jasper

관련 문제