根据R

时间:2015-07-29 21:57:51

标签: r

假设我的数据如下,

X    Y
26  14
26  14
26  15
26  15
27  15
27  15
28  16
28  16

我想删除重复行。我可以通过此命令

删除基于一列的重复行
dat[c(T, diff(dat$X) != 0), ] or dat[c(T, diff(dat$Y) != 0), ]

但是我想仅在两个列具有相同的先前值时才删除重复项。我不能在这里使用unique,因为稍后会出现相同的数据。我想检查以前的值并计算它

我的示例输出是,

x   y
26  14
26  15
27  15
28  16

我们怎样才能在R中做到这一点?

由于

Ijaz

2 个答案:

答案 0 :(得分:4)

使用func loadLibraryPhotos() { var fetchOptions = PHFetchOptions() fetchOptions.sortDescriptors = [NSSortDescriptor(key:"creationDate", ascending: false)] if let fetchResult = PHAsset.fetchAssetsWithMediaType(.Image, options: fetchOptions) { fetchResult.enumerateObjectsUsingBlock({ [weak self] asset, index, stop in if let strongSelf = self { if let asset = asset as? PHAsset { strongSelf.assets.append(asset) if strongSelf.assets.count == NumberOfMostRecentPhotos { stop.memory = ObjCBool(true) } } } }) collectionView.reloadData() } - 安装说明here

data.table v1.9.5
通过示例最好地理解

require(data.table) # v1.9.5+ df[!duplicated(rleidv(df, cols = c("X", "Y"))), ]

rleidv()

为每个连续的值运行生成唯一索引。

同样可以在特定列列上的rleidv(c(1,1,1,2,2,3,1,1)) # [1] 1 1 1 2 2 3 4 4 list()data.frame()上完成。例如:

data.table()

其余的应该是相当明显的。我们只检查df = data.frame(a = c(1,1,2,2,1), b = c(2,3,4,4,2)) rleidv(df) # computes on both columns 'a,b' # [1] 1 2 3 3 4 rleidv(df, cols = "a") # only looks at 'a' # [1] 1 1 2 2 3 值,并返回非重复值。

答案 1 :(得分:0)

使用dplyr

library(dplyr)
z %>% filter(X != lag(X) | Y != lag(Y) | row_number() == 1)

我们需要包含row_number()==1或我们丢失第一行