使用 dplyr,我想對以下資料框進行分組,然后進行日期比較。
df <- data.frame(ID = c(1,1,2,2,3,3,4,4,5,6),
X1 = c("A","A","B","C","A","B","B","B","C","A"),
X2 = sample(10:30,10,replace = TRUE),
dat = as.Date(c("2021-01-01","2021-01-01","2021-02-01","2021-02-01","2021-01-03",
"2021-10-05","2021-05-05","2021-05-06","2021-09-14","2021-06-04")))
group by 應該在 ID 和 X1 上(X2 可以忽略)。所以基本上,對于 X1 具有相同值的所有 ID,應該比較日期,并且應該保留日期差異為 1(正或負)或更小的 ID。所需的輸出是:
ID X1
1 1 A
2 1 A
3 4 B
4 4 B
uj5u.com熱心網友回復:
分組依據ID并X1僅選擇具有 2 行或更多行且日期之間的差異為 1 的那些組。
你可以試試 -
library(dplyr)
df %>%
group_by(ID, X1) %>%
filter(n() >= 2, all(abs(diff(dat)) <= 1)) %>%
ungroup
# ID X1 X2 dat
# <dbl> <chr> <int> <date>
#1 1 A 30 2021-01-01
#2 1 A 19 2021-01-01
#3 4 B 24 2021-05-05
#4 4 B 30 2021-05-06
如果您只對ID和X1列感興趣,請添加%>% select(ID, X1).
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/336863.html
上一篇:致命錯誤:接近堆限制的無效標記壓縮分配失敗-運行React應用程式時JavaScript堆記憶體不足
下一篇:蘋果健康時間序列as.xtsas.POSIXlt.character(x,tz,...)中的錯誤:字串不是標準的明確格式
