0
我試圖通過依賴於一個ID矢量特定日期時間來過濾我的數據幀。
具體而言,對於觀察其中df$id == "A"
,我想要刪除2017-08-05 00:20:00
和2017-08-10 13:55:00
之間的行。但是,對於觀察其中df$id == "B"
,我想刪除不同時間間隔的行,2017-08-05 00:30:00
和2017-08-10 13:55:00
。
實例數據框:
date <- as.POSIXct(c("2017-08-04 16:40:00","2017-08-05 00:20:00","2017-08-10 13:55:00","2017-08-15 08:35:00", "2017-08-04 17:20:00","2017-08-05 00:30:00","2017-08-10 13:55:00","2017-08-15 09:30:00"), format = "%Y-%m-%d %H:%M:%S")
value <- as.numeric(c(1, 2, 3, 4, 1, 2, 3, 4))
id <- as.factor(c("A","A","A","A","B","B","B","B"))
df <- data.frame(date, value, id)
所需的輸出:
date value id
2017-08-04 16:40:00 1 A
2017-08-15 08:35:00 4 A
2017-08-04 17:20:00 1 B
2017-08-15 09:30:00 4 B
謝謝!
編輯:,如果你的數據框有要在整體保持第三類(df$id == "C"
):
df[which(
(df$id == "A" & (df$date < "2017-08-05 00:20:00" | df$date > "2017-08-10 13:55:00")) |
(df$id == "B" & (df$date < "2017-08-05 00:30:00" | df$date > "2017-08-10 13:55:00"))
| df$id == "C"), ]
謝謝!這非常接近,但'df $ id ==「B」'中的第一個日期應該是'2017-08-05 00:30:00'而不是'2017-08-04 17:20:00'。 – spacedSparking
真棒,感謝您的幫助! – spacedSparking
這個解決方案適用於我的例子,但並不完全符合我的實際數據。如果你想爲'A'和'B'應用相同的日期過濾器,你會怎麼做,但是你想保留所有的不同id的數據,比如'df $ id ==「C」'? – spacedSparking