我需要計算資料集中每個人在一個財政季度內花費的天數。這是一個包含 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.
uj5u.com熱心網友回復:
只需按日歷年的季度對資料進行分組:
df2<-df %>% mutate(fu_time = end - start, quarter=lubridate::quarter(end_date)) %>%
group_by(quarter) %>% summarise(fu_time=sum(fu_time))
barplot(df2$quarter,as.numeric(df2$fu_time))
uj5u.com熱心網友回復:
好的,所以我想通了,需要按行分組,因為我沒有矢量化函式。
所以這里是最終的函式以及它在運行時的樣子。希望這可以幫助別人!
> # Calculate quarter 1/2/3/4 times
> q1fun <- function(x,y) {
sum(month(seq(x, y, by = "days")) %in% 1:3)
}
> q2fun <- function(x,y) {
sum(month(seq(x, y, by = "days")) %in% 4:6)
}
> q3fun <- function(x,y) {
sum(month(seq(x, y, by = "days")) %in% 7:9)
}
> q4fun <- function(x,y) {
sum(month(seq(x, y, by = "days")) %in% 10:12)
}
>
> df %>%
rowwise %>%
mutate(q1 = q1fun(start, end),
q2 = q2fun(start, end),
q3 = q3fun(start, end),
q4 = q4fun(start,end))
# A tibble: 4 x 7
# Rowwise:
id start end q1 q2 q3 q4
<chr> <date> <date> <int> <int> <int> <int>
1 1 2004-07-24 2009-05-24 451 418 437 460
2 2 1992-07-04 2002-02-04 847 819 917 920
3 3 2011-03-23 2015-09-23 370 455 453 368
4 4 2001-07-04 2011-12-04 902 910 1009 985
最終結果是一個資料框,其中包含每個患者在每個季度內花費的天數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/362342.html
