当我尝试使用 dplyr 按组求和时,为什么 dplyr 会忽略我的组?
When I try to sum by group using dplyr, why is dplyr ignoring my group?
我想在按每个组求和的数据框中创建一个新列。数据框为:
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
求和 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
出了什么问题?
首先您需要将 ab$a
更改为数字。试试这个:
library(tidyverse)
ab$a <- as.numeric(as.character(ab$a))
ab <- ab %>%
group_by(b) %>%
mutate(c=sum(a))
你实际上让它变得比需要的更复杂。创建 a
时不需要 as.numeric,创建 ab
时不需要 cbind
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 package (v0.3.0)
于 2020-05-07 创建
我想在按每个组求和的数据框中创建一个新列。数据框为:
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
求和 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
出了什么问题?
首先您需要将 ab$a
更改为数字。试试这个:
library(tidyverse)
ab$a <- as.numeric(as.character(ab$a))
ab <- ab %>%
group_by(b) %>%
mutate(c=sum(a))
你实际上让它变得比需要的更复杂。创建 a
时不需要 as.numeric,创建 ab
cbind
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 package (v0.3.0)
于 2020-05-07 创建