首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据R中的若干准则和和值对多行进行分组?

如何根据R中的若干准则和和值对多行进行分组?
EN

Stack Overflow用户
提问于 2018-12-01 06:14:15
回答 2查看 1.9K关注 0票数 1

大家好,例子:-以上是我所拥有的数据。我想要分组年龄1-2和计数的值。在这个数据值为4的年龄组1-2。类似地,我希望分组年龄3-4岁,并计算值。这里,3-4岁年龄组的数值是6.

我如何分组年龄和聚合值对应于它?

我知道这个方法:密码-

代码语言:javascript
运行
复制
data.frame(df %>% group_by(df$Age) %>% tally())

但是,这些价值在个人年龄上是不断累积的。我希望在多个年龄上聚合的值像上面提到的那样是一个组。

在这方面的任何帮助都是非常有帮助的。非常感谢大家。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-01 06:47:45

这里有两个解决方案,一个是基R,另一个是包dplyr

我将使用Shree发布的数据。

First,R.

我创建一个分组变量grp,然后在它上创建aggregate

代码语言:javascript
运行
复制
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用于创建分组变量。这允许以一种简单的方式为组指定有意义的名称。

代码语言:javascript
运行
复制
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
票数 1
EN

Stack Overflow用户

发布于 2018-12-01 06:21:29

这里有一种使用dplyr?cut的方法-

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53568268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档