r - 当我尝试使用 dplyr 按组求和时,为什么 dplyr 会忽略我的组?
问题描述
我想在每个组求和的数据框中创建一个新列。数据框为:
a<-as.numeric(c(1,2,4,2,2))
b<-c('G','A','A','C','F')
ab<-data.frame(cbind(a,b))
这给了我以下数据集:
ab
a b
1 1 G
2 2 A
3 4 A
4 2 C
5 2 F
现在我想取a
by的总和b
。
ab<-ab %>%
group_by(b) %>%
mutate(c=sum(as.numeric(a)))
我的结果是:
a b c
<fct> <fct> <dbl>
1 G 10
2 A 10
4 A 10
2 C 10
2 F 10
如您所见,它完全忽略了我的分组,只是a
对整个数据集求和。我想要的是:
a b c
<fct> <fct> <dbl>
1 G 1
2 A 6
4 A 6
2 C 2
2 F 2
什么地方出了错?
解决方案
你实际上让它变得比它需要的更复杂。创建时不需要 as.numeric,创建时也不a
需要cbind
ab
library(dplyr)
a <- c(1, 2, 4, 2, 2)
b <- c('G', 'A', 'A', 'C', 'F')
ab <- data.frame(a, b)
str(ab)
#> 'data.frame': 5 obs. of 2 variables:
#> $ a: num 1 2 4 2 2
#> $ b: chr "G" "A" "A" "C" ...
ab <- ab %>%
group_by(b) %>%
mutate(c = sum(a))
ab
#> # A tibble: 5 x 3
#> # Groups: b [4]
#> a b c
#> <dbl> <chr> <dbl>
#> 1 1 G 1
#> 2 2 A 6
#> 3 4 A 6
#> 4 2 C 2
#> 5 2 F 2
由reprex 包(v0.3.0)于 2020 年 5 月 7 日创建
推荐阅读
- angular - npm 错误!peer dep 缺失:@angular/core@^2.0.0,ng2-translate@5.0.0 需要
- svg - SVG - 文本容器的最小宽度
- pandas - 使用“%”选择数据并在 pandas 中处理的问题
- python - Python json.loads 多个回调参数
- datetime - 将 4 个十六进制值反向工程为 DateTime
- android - 将数据(包括图像)从 ListView 传递到另一个活动(独立于每个 ListView 选项)并初始化每个活动的起始值
- python - Django 无法执行 python manage.py runserver
- regex - 如何使用正则表达式匹配由任意数量的字符和空格分隔的两个单词?
- node.js - 如何以角度 6 获取 EPOCH 日期时间格式?
- javascript - if 语句中的构造函数返回未捕获类型错误