0
我有一個包含大量重複TIME和AIR數據項的數據集。我需要刪除所有包含這些條目的行。這本身是非常簡單的:只刪除特定列/行中的重複項
DATE <- c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3)
#Supposed to be 4 entries per date; day 1 has 1 entry too many, day 2 has 2 entries too many
TIME <- c(0,3,3,6,9,0,0,3,6,9,9,0,3,6,9)
#Samples are taken every 3 hours from 0-9 each day
AIR <- c(1.1, 1.2, 1.2, 1.3, 1.4, 1.1, 1.1, 1.2, 1.3, 1.4, 1.4, 1.1, 1.2, 1.3, 1.4)
DF <- data.frame(DATE, TIME, AIR)
DF1 <- DF[!(duplicated(DF$TIME) & duplicated(DF$AIR)),]
DF1
將輸出如下:
DATE TIME AIR
1 1 0 1.1
2 1 3 1.2
4 1 6 1.3
5 1 9 1.4
不過,我需要考慮的每一天,或日期,單獨,我實際上是尋找輸出:
DATE TIME AIR
1 0 1.1
1 3 1.2
1 6 1.3
1 9 1.4
2 0 1.1
2 3 1.2
2 6 1.3
2 9 1.4
3 0 1.1
3 3 1.2
3 6 1.3
3 9 1.4
在這種情況下,複製會在每一天停止。我認爲這會稍微適應我的代碼片段,但事實並非如此,我嘗試了很多變體:DF2 <- DF[!(duplicated(DF$TIME) & duplicated(DF$AIR)) & duplicated(DF$DATE),]
無濟於事。因此,它可能需要稍微複雜一些 - 或者至少超出我目前的手段。任何人都可以建議我需要怎麼做才能以這種方式分別考慮每一天?非常感謝!
請注意,實際上它可能是TIME
是重複的,但AIR
不是;這就是爲什麼我必須刪除那些TIME
和AIR
重複的條目。
如果你沒有在你的數據的任何其他列,您可以用'獨特(DF)' –
不幸的是我的全部數據集有大約104列 – Visser
在這種情況下,如果這些是前3列,則可以使用DF [!duplicated(DF [,1:3])]。或者,您可以指定列名的字符向量來替換「1:3」。 –