繁体   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