微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 mutate、if_else 和 rowSums 根据条件创建新的 var

如何解决使用 mutate、if_else 和 rowSums 根据条件创建新的 var

我有一个长格式的数据框。我有多个城市。每个城市都有每个月的信息和每个代码的信息(这个代码从 100 到 1,000)。我的数据框如下所示:

代码 城市 数据
100 A 10 0
100 B 12 1
100 A 10 2
100 B 12 3
100 A 10 4
100 B 12 5
200 A 10 10
200 B 12 11
200 A 10 12
200 B 12 13
200 A 10 14
200 B 12 15

我正在尝试创建一个新的变量,当变量 Code 等于 100 时,它会将 Data 变量中的信息相加。所以对于第 10 个月一个月的结果是 6,第 12 个月的结果是 9:

代码
6
9
6
9
6
9
6
9
6
9
6
9

为此,我使用 dplyr

df <- df %>%
group_by(month) %>% 
mutate(newvar =case_when(Code==100 ~ as.integer(rowSums(select_(.,"Data"),na.rm = TRUE))))       

但是,我收到一个错误,我无法正确创建这个新变量。我知道更简单的方法是使用基础 R。但我想使用 dplyr

任何帮助都非常感谢!

解决方法

您只能在每个 sumDataCode = 100 month 值。

library(dplyr)

df %>%
  group_by(month) %>%
  mutate(newvar = sum(Data[Code == 100],na.rm = TRUE)) %>%
  ungroup
,

我们也可以

library(dplyr)
df %>%
   group_by(month) %>%
   mutate(newvar = sum(case_when(Code == 100 ~ Data),na.rm = TRUE))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。