1

我需要帮助来删除 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

我尝试过的是:独特或重复的功能,但它们给出了不同的结果。

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

此代码只是删除所有 data.frame 中的所有重复值。

有人可以帮助我找到解决方案吗?

之前谢谢, 问候,

尤吉兹

4

2 回答 2

2

可能不是最优雅的方式:

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)]
于 2012-06-20T10:10:35.460 回答
2

以下代码使您感兴趣的三列成为单个向量。然后,我只是测试向量之间的相等性和它的偏移量 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 倍。随着数据集的增长,优势应该会变得更大。

于 2012-06-20T10:25:38.153 回答