我需要帮助删除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中的所有重复值。
有人可以帮我找到解决方案吗?
先谢谢,问候,
Yougyz
答案 0 :(得分: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)]
答案 1 :(得分: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倍。随着数据集的增长,优势应该会越来越大。