[英]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.