我試圖編寫一個函數或使用cut
爲這些日期關閉(用戶定義關閉)時的某些日期數據分配一個分組變量。例如,我想爲連續日期收集的一些樣本創建一個通用分組變量。我在想cut
會在這裏工作,但後來我意識到cut
當它們靠近時不會對變量進行分組,而是基於序列創建一系列組。日期關閉時的組日期變量
所以借這個數據幀,例如:
df <- structure(list(Num = c(0.888401849195361, 0.185766335576773,
0.493163562379777, 0.13070688676089, 0.484760325402021, 0.603240836178884,
0.893201333936304, 0.641203448642045, 0.16957180458121, 0.0101411847863346
), Date = structure(c(10592, 10597, 10598, 10605, 10606, 10608,
10609, 10616, 10617, 10618), class = "Date"), day = c(1L, 6L,
7L, 14L, 15L, 17L, 18L, 25L, 26L, 27L)), .Names = c("Num", "Date",
"day"), row.names = c(NA, -10L), class = "data.frame")
如果是因爲我瞭解它的用法是這樣來應用切換功能:
df$cutVar <- cut(df$day, breaks= seq(0, 31, by = 1), right=TRUE)
我將留下與去權的範圍通過我更喜歡分組在一起的價值觀。例如,第6名和第7名應該根據他們彼此的接近程度分組在一起。類似於14日和15日等。
> df
Num Date day cutVar
1 0.88840185 1999-01-01 1 (0,1]
2 0.18576634 1999-01-06 6 (5,6]
3 0.49316356 1999-01-07 7 (6,7]
4 0.13070689 1999-01-14 14 (13,14]
5 0.48476033 1999-01-15 15 (14,15]
6 0.60324084 1999-01-17 17 (16,17]
7 0.89320133 1999-01-18 18 (17,18]
8 0.64120345 1999-01-25 25 (24,25]
9 0.16957180 1999-01-26 26 (25,26]
10 0.01014118 1999-01-27 27 (26,27]
因此,這裏的基本問題是如何組連續變量(在此情況下的日期),使得接近(由用戶定義)號中的一個因素範圍組合在一起?
對於_consecutive_日期組,可能'rle'會非常有用。由於傳遞性質,在我看來,「接近」的其他定義將很快變得有問題。 – joran
你可以粘貼一個你想要的輸出的例子嗎(或者是最後的'df')?你只是想要2個相鄰的行結合?例如,如果1與「2」接近,&2接近3,......,19接近20,但1不是遠離「接近」20?數據是否已經存在於一個不變的集合中,或者隨着時間的推移會不斷添加新的數據? – gung
@joran我完全同意這一點。但是,在我的情況下(示例數據可能無法捕獲),這不成問題。這是歷史抽樣數據,有人在一兩天內收集了數據,然後等待了一個月,然後做了同樣的事情。是否有可能概述「rle」的用法? – boshek