2016-08-31 2 views
1

R에서 dplyr의 summarize 및 group by을 사용하려고하지만 요약 된 열을 명시 적으로 호출하는 대신 변수를 사용하면 전체 데이터 세트에 대해 dist의 합계를 사용합니다. 각 행은 적절하게 그룹화하지 않습니다. 아래의 TestBad와 TestGood의 차이점에서 쉽게 확인할 수 있습니다. TestBood 에서처럼 GraphVar 변수를 사용하여 TestGood의 결과를 복제 할 수 있기를 바랍니다.dplyr를 사용하여 R에서 동적 변수를 사용하여 요약

require("dplyr") 
    GraphVar <- "dist" 

    TestBad <- summarise(group_by_(cars,"speed"),Sum=sum(cars[[GraphVar]],na.rm=TRUE),Count=n()) 

    testGood <- summarise(group_by_(cars,"speed"),Sum=sum(dist,na.rm=TRUE),Count=n()) 

고마워요!

+0

dplyr의 표준 평가 기능이 필요합니다. 예 [here] (http://stackoverflow.com/questions/27975124/pass-arguments-to-dplyr-functions)와 [nse vignette here] (https://cran.r-project.org/web)를 참조하십시오. /packages/dplyr/vignets/nse.html) – aosmith

+0

@aosmith 그들은 이미 표준 평가판 ('group_by_')을 사용하고 있으며 문제가 있습니다. – Frank

답변

3

표준 평가 함수 summarise_과 함께 lazyeval::interp이 필요합니다.

library(lazyeval) 
cars %>% 
    group_by_("speed") %>% 
    summarise_(Sum = interp(~sum(var, na.rm = TRUE), var = as.name(GraphVar)), 
      Count = ~n()) 
관련 문제