大家好,例子:-以上是我所拥有的数据。我想要分组年龄1-2和计数的值。在这个数据值为4的年龄组1-2。类似地,我希望分组年龄3-4岁,并计算值。这里,3-4岁年龄组的数值是6.
我如何分组年龄和聚合值对应于它?
我知道这个方法:密码-
data.frame(df %>% group_by(df$Age) %>% tally())
但是,这些价值在个人年龄上是不断累积的。我希望在多个年龄上聚合的值像上面提到的那样是一个组。
在这方面的任何帮助都是非常有帮助的。非常感谢大家。
发布于 2018-12-01 06:47:45
这里有两个解决方案,一个是基R,另一个是包dplyr
。
我将使用Shree发布的数据。
First,R.
我创建一个分组变量grp
,然后在它上创建aggregate
。
grp <- with(df, c((age %in% 1:2) + 2*(age %in% 3:4)))
aggregate(age ~ grp, df, length)
# grp age
#1 1 4
#2 2 6
‘sa dplyr
way.
函数case_when
用于创建分组变量。这允许以一种简单的方式为组指定有意义的名称。
library(dplyr)
df %>%
mutate(grp = case_when(
age %in% 1:2 ~ "2:3",
age %in% 3:4 ~ "3:4",
TRUE ~ NA_character_
)) %>%
group_by(grp) %>%
tally()
## A tibble: 2 x 2
# grp n
# <chr> <int>
#1 1:2 4
#2 3:4 6
发布于 2018-12-01 06:21:29
这里有一种使用dplyr
和?cut
的方法-
df <- data.frame(age = c(1,1,2,2,3,3,3,4,4,4),
Name = letters[1:10],
stringsAsFactors = F)
df %>%
count(grp = cut(age, breaks = c(0,2,4)))
# A tibble: 2 x 2
grp n
<fct> <int>
1 (0,2] 4
2 (2,4] 6
https://stackoverflow.com/questions/53568268
复制相似问题