【问题标题】:dplyr mutate: Using variables defined in mutate in definition of other variables in same mutatedplyr mutate:使用 mutate 中定义的变量定义同一个 mutate 中的其他变量
【发布时间】:2018-05-06 20:15:43
【问题描述】:

我正在尝试获取大约 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.

我之前写过函数,其中一个变异变量是根据定义在其左侧的另一个变异变量来定义的。不知道为什么不在这里。

【问题讨论】:

    标签: r scope dplyr


    【解决方案1】:

    我相信这与您使用 &lt;- 在 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
    

    【讨论】:

    • 在实施你的修复后,我得到了一个“中断不是唯一的”错误,所以我在 hhinc99 中添加了一些抖动。这摆脱了非唯一错误,没有我得到这个:错误在 mutate_impl(.data, dots) 中:评估错误:未使用的参数 (weights = wtsupp, probs = c(0:10/10))。
    • (ooops. hit retrurn) 不知道 mutate 如何甚至可以看到权重和概率?这些是 wtd.quantile 的论点,它本身就是 cut 的一个论点。我支持你并且无论如何都会接受你的答案,但如果你对修复旧错误(和后续错误)揭示的这个新错误有想法,他们将是非常受欢迎。
    猜你喜欢
    • 2019-01-29
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多