r - R:如何按计数聚合行
问题描述
这是我的数据框
ID=c(1,2,3,4,5,6,7,8,9,10,11,12)
favFruit=c('apple','lemon','pear',
'apple','apple','pear',
'apple','lemon','pear',
'pear','pear','pear')
surveyDate = ('1/1/2005','1/1/2005','1/1/2005',
'2/1/2005','2/1/2005','2/1/2005',
'3/1/2005','3/1/2005','3/1/2005',
'4/1/2005','4/1/2005','4/1/2005')
df<-data.frame(ID,favFruit, surveyDate)
我需要聚合它,以便我可以在 R 中绘制一个折线图,以按日期拆分 favFruit 的 favFruit 计数,但我无法创建聚合表。我的数据有 45000 行,因此无法手动解决。
surveyYear favFruit count
1/1/2005 apple 1
1/1/2005 lemon 1
1/1/2005 pear 1
2/1/2005 apple 2
2/1/2005 lemon 0
2/1/2005 pear 1
... etc
我试过了,但 R 打印了一个错误
df2 <- aggregate(df, favFruit, FUN = sum)
我试过这个,另一个错误
df2 <- aggregate(df, date ~ favFruit, sum)
我在网上查了解决方案,但他们的数据通常包括一列我没有的数量,而且解决方案过于复杂。是否有捷径可寻?提前谢谢。感谢任何建议该链接作为可能重复但它具有日期和行数的人。但我的问题需要按日期和 favFruit 的行数(多一列)1
更新:Ronak Shah 的解决方案奏效了。谢谢!
解决方案
Ronak 提供的解决方案非常好。如果您希望在数据框中保留零计数。你可以使用table
功能:
data.frame(with(df, table(favFruit, surveyDate)))
输出:
favFruit surveyDate Freq
1 apple 1/1/2005 1
2 lemon 1/1/2005 1
3 pear 1/1/2005 1
4 apple 2/1/2005 2
5 lemon 2/1/2005 0
6 pear 2/1/2005 1
7 apple 3/1/2005 1
8 lemon 3/1/2005 1
9 pear 3/1/2005 1
10 apple 4/1/2005 0
11 lemon 4/1/2005 0
12 pear 4/1/2005 3
推荐阅读
- mysql - 如何在 MySQL 中通过 YEARWEEK 检索上周?
- vue.js - Google Oauth 未将 www.domain.com 和 domain.com 识别为同一网站
- javascript - 当我们使用像 ab 这样的东西时,排序函数在 javascript 中如何工作(我想知道后台发生了什么)
- node.js - UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“MessageEmbed”
- node.js - typescript + Node 15.5.1,不能在模块外使用import语句
- reactjs - 从当前路由(功能组件)反应路由器(react-router-dom)设置页面标题?
- javascript - Discord.js - ReferenceError:未定义连接
- java - 使用 JIB 生成图像并在 GitLab CI 上使用 docker 推送时遇到问题
- terraform - 来自一个 Git 存储库的多个 terraform 环境?
- node.js - Typeorm 无法连接到 Postgres