我有一个如下所示的数据框:
gov1rlc gov2rlc gov3rlc gov1vote gov2vote gov3vote
<int> <int> <int> <dbl> <dbl> <dbl>
3 2 NA 24.35 1.04 0
2 3 2 NA 24.35 1.04
3 2 NA 24.35 1.04 0
3 NA NA 54.40 0.00 0
3 NA NA 54.40 0.00 0
3 NA NA 54.40 0.00 0
此时,我想计算左翼政党的投票份额(gov1rlc,gov2rlc,gov3rlc等于3),因为我使用以下代码:
d <- d %>% mutate(left_share=case_when(gov1rlc==3&gov2rlc==3&gov3rlc==3~gov1vote+gov2vote+gov3vote,
gov1rlc==3&gov2rlc==3&gov3rlc!=3~gov1vote+gov2vote,
gov1rlc==3&gov2rlc!=3&gov3rlc==3~gov1vote+gov3vote,
gov1rlc==3&gov2rlc!=3&gov3rlc!=3~gov1vote,
gov1rlc!=3&gov2rlc!=3&gov3rlc!=3~0,
gov1rlc!=3&gov2rlc==3&gov3rlc==3~gov2vote+gov3vote,
gov1rlc!=3&gov2rlc==3&gov3rlc!=3~gov2vote,
gov1rlc!=3&gov2rlc!=3&gov3rlc==3~gov3vote))`
然而,之后我得到Error in mutate_impl(.data, dots) : object 'gov1rlc' not found
,考虑到我在管道中,并且相同的代码在另一台计算机上工作,这真的很奇怪。
如果我在每个对象之前使用d$
运算符,则会显示以下消息:Error in mutate_impl(.data, dots) : NAs are not allowed in subscripted assignments
。
简单地说:发生了什么以及发生了什么?
答案 0 :(得分:0)
因此,这不是您感兴趣的问题的直接答案,但您似乎正在尝试对data.frame中的列进行求和。如果我们可以假设NA值指的是右股票投票,那么使用以下内容维持总和会更灵活,更简单:
rowwise()
这应该生成与当前代码相同的信息,并且它在您要使用的tidyverse框架内。我回应康拉德的评论,你也将tidyverse更新到最新版本。我不相信{{1}}直到最近才被添加。