簡體   English   中英

從R中的data.frame中刪除每個間隔的重復行

[英]Removing repeated rows with each interval from data.frame in R

我需要幫助刪除data.frame的相同間隔值中的所有重復行。

例如,我有一個data.frame,如:

Time                X   Y   Z
01/01/2011 00:00    101 200 302
01/01/2011 00:05    101 200 302
01/01/2011 00:10    101 200 302
01/01/2011 00:20    100 200 303
01/01/2011 00:25    100 200 303
01/01/2011 00:30    100 200 303
01/01/2011 00:35    101 200 302
01/01/2011 00:40    100 200 303
01/01/2011 00:45    100 200 303

刪除重復的行值(x,y,z)后,我將得到如下結果:

Time                X   Y   Z
01/01/2011 00:00    101 200 302
01/01/2011 00:20    100 200 303
01/01/2011 00:35    101 200 302
01/01/2011 00:40    100 200 303

我嘗試過:獨特或重復的功能,但它們給出了不同的結果。

ex / eliminate <- data[!duplicated(data[,c("X","Y","Z")]),]

此代碼只刪除所有data.frame中的所有重復值。

有人可以幫我找到解決方案嗎?

先謝謝,此致,

Yougyz

可能不是最優雅的方式:

data  <- within(data, C <- paste(X, Y, Z, sep = ""))
rl <- rle(data$C)$lengths
data <- data[c(1, cumsum(rl)[-length(rl)] + 1), 1:(ncol(data)-1)]

以下代碼使您感興趣的三列成為單個向量。 然后,我只測試向量之間的相等性,它的偏移量為1.當這是假的時,你已經轉換到一個新的XYZ項目。

n <- nrow(ss)
xyz <- with(ss, paste0(X, Y, Z))
sel <- xyz[1:(n-1)] !=  xyz[2:n]
ss[c(TRUE,sel),] #the first one would always be true

這比朱利葉斯回答快約3倍。 隨着數據集的增長,優勢應該會變得更大。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM