【发布时间】:2021-12-29 13:26:05
【问题描述】:
我需要计算数据集中每个人在一个财政季度内花费的天数。这是一个包含 4 个假设人的数据框:
id <- c('1', '2', '3', '4')
end_date <- c("2009-05-24", "2002-02-04", "2015-09-23", "2011-12-04")
start_date <- c("2004-07-24", "1992-07-04", "2011-03-23", "2001-07-04")
df <- data.frame(id, start = ymd(start_date), end = ymd(end_date))
我可以很容易地计算出他们每人和总体的总随访次数:
> df %>% mutate(fu_time = end - start)
id start end fu_time
1 1 2004-07-24 2009-05-24 1765 days
2 2 1992-07-04 2002-02-04 3502 days
3 3 2011-03-23 2015-09-23 1645 days
4 4 2001-07-04 2011-12-04 3805 days
> df %>% mutate(fu_time = end - start) %>% summarize(total = sum(fu_time))
total
1 10717 days
更新:越来越接近 - 我想我正在做一些事情,虽然有奇怪的错误
我编写了以下函数,它可以计算出患者在 Q1 内度过了多少天:
q1fun <- function(x,y) {
sum(month(seq(x, y, by = "days")) %in% 1:3)
}
基本上,它扩展序列,计算月数,然后返回该值。比如:
> q1fun(ymd("2004-07-24"), ymd("2009-05-24"))
[1] 451
问题是它在 mutate 中不起作用!我确定我做错了什么;如果有人可以帮助完成最后一步,我会得到它!
df %>%
+ mutate(q1 = q1fun(start, end))
Error: Problem with `mutate()` input `q1`.
x 'from' must be of length 1
i Input `q1` is `q1fun(start, end)`.
Run `rlang::last_error()` to see where the error occurred.
【问题讨论】:
标签: r date datetime dplyr lubridate