dplyr mutate:在同一mutate中定义其他变量时使用mutate中定义的变量

时间:2017-11-23 00:18:07

标签: r scope dplyr mutate

我试图获取大约800万条记录,通过分位数(在我的实际应用程序中逐渐减少)将它们分成相等的组,然后找到每组的平均值。我希望这是一个可重复的例子:

require(Hmisc)  # for weighted functions

year    <- c(10,10,20,20,30,30)
hhinc99 <- c(101,102,301,301,501,502)
wtsupp  <- c(1.1,1.2,1.3,1.5,1.7,1.11)

midy    <- tibble(year, hhinc99, wtsupp)

 midy  %>% 
   group_by(year)   %>% 
   mutate(inc2 <- hhinc99, 
          inc_q_groups <- cut(inc2, breaks = 
                                wtd.quantile(hhinc99, 
                                             weights = wtsupp, 
                                             probs=c(0, .5, 0)))  %>% 
            group_by(inc_q_groups)   %>% 
            summarize(inc_q_means <- 
                        wtd.mean(hhinc99, weights = wtsupp, na.rm=TRUE))) -> 
   inc_dec_means

当我运行此代码时,我收到以下错误。

Error in mutate_impl(.data, dots) : 
  Evaluation error: object 'inc2' not found.

在根据左边定义的另一个mutate变量定义mutate变量之前,我已经编写了函数。不知道为什么不在这里。

1 个答案:

答案 0 :(得分:1)

我认为这与你使用<-进行mutate内部的赋值而不是=有关。


library(tidyverse)                      
require(Hmisc)  # for weighted functions

year    <- c(10,10,20,20,30,30)         
hhinc99 <- c(101,102,301,301,501,502)   
wtsupp  <- c(1.1,1.2,1.3,1.5,1.7,1.11)  

midy    <- tibble(year, hhinc99, wtsupp)

midy  %>%                               
group_by(year)   %>%                    
mutate(inc2 <- hhinc99)  

#> # A tibble: 6 x 4
#> # Groups:   year [3]
#>    year hhinc99 wtsupp `inc2 <- hhinc99`
#>   <dbl>   <dbl>  <dbl>             <dbl>
#> 1    10     101   1.10               101
#> 2    10     102   1.20               102
#> 3    20     301   1.30               301
#> 4    20     301   1.50               301
#> 5    30     501   1.70               501
#> 6    30     502   1.11               502