首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用if条件更新列()中的错误

使用if条件更新列()中的错误
EN

Stack Overflow用户
提问于 2022-10-12 15:47:32
回答 1查看 24关注 0票数 1

我使用了下面的代码,但是它给了我错误

代码语言:javascript
复制
UPDATED_PENALTY['HISTORIC_PENALTY'] <- ave(UPDATED_PENALTY$PENALTY, UPDATED_PENALTY$OFFICIAL_NUMBER, FUN=cumsum)
UPDATED_PENALTY['cum_prodsum']<-NA
UPDATED_PENALTY %>%
  mutate(cum_prodsum = ifelse(UPDATED_PENALTY$INSPECTION_CLEARED==TRUE, UPDATED_PENALTY$HISTORIC_PENALTY*0.9, UPDATED_PENALTY$HISTORIC_PENALTY*0.9 + UPDATED_PENALTY$PENALTY))

错误

代码语言:javascript
复制
Error in `mutate()`:
! Problem while computing `cum_prodsum = ifelse(...)`.
x `cum_prodsum` must be size 12 or 1, not 32217.
i The error occurred in group 1: OFFICIAL_NUMBER = "XXXXX".
Run `rlang::last_error()` to see where the error occurred.

另外,我想先排除每个“官方编号”的“历史惩罚”,并复制它的值,其余全部应用上述内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-12 16:54:31

我们可以这么做

代码语言:javascript
复制
library(dplyr)
UPDATE_PENALTY <- UPDATE_PENALTY %>%
        ungroup %>% 
        mutate(cum_prodsum = case_when(INSPECTION_COUNT == 1 
   ~ HISTORIC_PENALTY, 
    INSPECTION_CLEARED ~ HISTORIC_PENALTY*0.9, 
     TRUE  ~HISTORIC_PENALTY*0.9  + PENALTY))

-output

代码语言:javascript
复制
UPDATE_PENALTY
# A tibble: 46 × 7
   OFFICIAL_NUMBER NUM_DEF PENALTY INSPECTION_COUNT INSPECTION_CLEARED HISTORIC_PENALTY cum_prodsum
   <chr>             <dbl>   <dbl>            <int> <lgl>                         <dbl>       <dbl>
 1 170718               14      60                1 FALSE                            60        60  
 2 803729                0       0                1 TRUE                              0         0  
 3 803729               65     311                2 FALSE                           311       591. 
 4 170718                8      24                2 FALSE                            84        99.6
 5 170718                0       0                3 TRUE                             84        75.6
 6 170718               39     110                4 FALSE                           194       285. 
 7 170718                0       0                5 TRUE                            194       175. 
 8 170718                1       5                6 FALSE                           199       184. 
 9 170718                0       0                7 TRUE                            199       179. 
10 170718                0       0                8 TRUE                            199       179. 
# … with 36 more rows
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74044657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档