sql - base R:按两列聚合和求和
问题描述
我正在尝试使用聚合函数来实现与 SQL 查询相同的结果:
SQL:
sqldf(" SELECT
PhotoID,
UserID,
SUM(Points) AS PhotoTotalPoints
FROM Photos
GROUP BY PhotoId, UserId")
116 186 rows.
R基地:
aggregate(x = Photos["Points"]
, by = Photos[c("PhotoId","UserId")]
, FUN = sum
)
114 950 rows.
使用 dplyr:
Photos %>%
group_by(PhotoId,UserId) %>%
summarise(sum = sum(Points))
116 186 rows.
我是 R 新手。尝试以多种方式解决它,但在文档中找不到任何解释。我错过了什么?
解决方案
这将是一种情况,其中NA
一个分组列中有元素,如果有 NA,默认情况下aggregate
会删除该行。为了防止这种情况,我们可以使用na.action = NULL
aggregate(Points~ PhotoId + UserId
, FUN = sum, na.rm = TRUE, na.action = NULL
)
或者它可能是一些未使用的组合被丢弃的情况,drop = TRUE
用于 data.frame 方法
aggregate(x = Photos["Points"]
, by = Photos[c("PhotoId","UserId")]
, FUN = sum, na.rm = TRUE, drop = FALSE
)
推荐阅读
- python - Pandas:如何删除列值与特定值匹配的行(所有值都是值列表)
- reactjs - 如何在 NextJS 中拒绝特定浏览器的访问?
- r - 我的观星者表的输出是空的。为什么
- python - 索引值不在列表中
- react-native - 如何在 React Navigation 6 中更改 DrawerActiveBackgroundColor?
- python - SyntaxError:使用匹配大小写时语法无效
- mysql - mysql 无法创建/写入任何文件(OS errno 13 - 权限被拒绝)
- android - 基于 Cordova 的 APP 错误“执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障”
- python - 输入直到离开kivy时如何调用函数?
- python - Python Scrapy在一些请求后停止而没有任何错误