編輯:找出差距在時間數據
我發現下面的問題的方法,但是,它適用於小數據集,但仍對大數據集創建falses輸出。有人知道爲什麼嗎?我找不到這個錯誤。下面的代碼:
df$continuous <-
unlist(lapply(split(df, df$ID),
function(x) {
sapply(1:nrow(x),
function(y) {
any(x$start[y] - x$end[-(y:NROW(x$end))] <= 1)
})
}))
原來的問題: 我工作的一個函數在一系列的開始/結束日期的標識差距。如果開始日期晚於先前結束日期之後的1天開始,則輸出應該爲FALSE。
DATA:
df <- data.frame('ID' = c('1','1','1','1','1','1'), 'start' = as.Date(c('2010-01-01', '2010-01-03', '2010-01-05', '2010-01-09','2010-02-01', '2010-02-10')),
'end' = as.Date(c('2010-01-03', '2010-01-22', '2010-01-07', '2010-01-12', '2010-02-10', '2010-02-12')))
這是我嘗試用x = start
和y = end
來解決這個問題:
my_fun <- function(x,y){
any(x[i] - y[1:NROW(i)-1] <= 1)
}
它運作良好,如果我指定i
,但我不設法包裝成這樣循環。最終,這個函數應該以dplyr
的方式應用於大數據集中的組。
這是它應該是什麼樣子:
ID start end continuous
1 1 2010-01-01 2010-01-03 FALSE #or TRUE
2 1 2010-01-03 2010-01-22 TRUE
3 1 2010-01-05 2010-01-07 TRUE
4 1 2010-01-09 2010-01-12 TRUE
5 1 2010-02-01 2010-02-10 FALSE
6 1 2010-02-10 2010-02-12 TRUE #according to my function or FALSE compared to start[1] would be even better
我倒是很欣賞一些幫助與此有關。
是的,只是編輯我的問題。 – ceefel