R 相当于 SQL 查询 - 整数列的总和,其中参数之间的日期列
R equivalent to SQL query - sum of integer column where date column between parameters
您好,我正在尝试获取整数列的总和,其中单独列中给出的日期介于给定参数之间。
下面的 SQL 查询可以满足我的要求,但是在 sqldf 中查询速度太慢,所以我需要找到一个 R 等价物。数据是医院事件,其中 Stay 列表示该事件在医院度过的天数。 df table 包含每个患者 (AnonID)
的索引和结束日期
SELECT m.*, b.Sum
FROM df
LEFT JOIN
(SELECT AnonID, SUM(e.Stay) AS Sum
FROM
(SELECT e.*, d.IndexDate, d.EndDate
FROM Episodes e
LEFT JOIN df d
ON e.AnonID=d.AnonID )a
WHERE AdmissionDate BETWEEN CAST(a.IndexDate AS datetime2) AND CAST(a.EndDate AS datetime2)
GROUP BY AnonID) b
dplyr
库是最常用的 R 数据处理包之一。
在您的特定情况下,我们需要:
left_join
用于 LEFT JOIN
filter
用于 WHERE 子句
group_by
为 GROUP BY
summarise
(或summarize
)来计算聚合,例如 SUM
%>%
用于管道,纯粹是美学,但它使代码更易于阅读
把所有这些放在一起,你应该有这样的东西:
library(dplyr)
eps_in_range <- episodes %>%
left_join(df, by="AnonID") %>%
filter(AdmissionDate >= IndexDate,
AdmissionDate <= EndDate) %>%
group_by(AnonID) %>%
summarise(stay_sum = sum(Stay))
df %>%
left_join(eps_in_range)
如果不查看数据或不了解您想要实现的目标,很难确保这是 100% 正确的。希望这足以让您入门。那里有很多 dplyr
资源。我建议你 运行 一个一个地了解正在发生的事情。
您好,我正在尝试获取整数列的总和,其中单独列中给出的日期介于给定参数之间。
下面的 SQL 查询可以满足我的要求,但是在 sqldf 中查询速度太慢,所以我需要找到一个 R 等价物。数据是医院事件,其中 Stay 列表示该事件在医院度过的天数。 df table 包含每个患者 (AnonID)
的索引和结束日期SELECT m.*, b.Sum
FROM df
LEFT JOIN
(SELECT AnonID, SUM(e.Stay) AS Sum
FROM
(SELECT e.*, d.IndexDate, d.EndDate
FROM Episodes e
LEFT JOIN df d
ON e.AnonID=d.AnonID )a
WHERE AdmissionDate BETWEEN CAST(a.IndexDate AS datetime2) AND CAST(a.EndDate AS datetime2)
GROUP BY AnonID) b
dplyr
库是最常用的 R 数据处理包之一。
在您的特定情况下,我们需要:
left_join
用于 LEFT JOINfilter
用于 WHERE 子句group_by
为 GROUP BYsummarise
(或summarize
)来计算聚合,例如 SUM%>%
用于管道,纯粹是美学,但它使代码更易于阅读
把所有这些放在一起,你应该有这样的东西:
library(dplyr)
eps_in_range <- episodes %>%
left_join(df, by="AnonID") %>%
filter(AdmissionDate >= IndexDate,
AdmissionDate <= EndDate) %>%
group_by(AnonID) %>%
summarise(stay_sum = sum(Stay))
df %>%
left_join(eps_in_range)
如果不查看数据或不了解您想要实现的目标,很难确保这是 100% 正确的。希望这足以让您入门。那里有很多 dplyr
资源。我建议你 运行 一个一个地了解正在发生的事情。