假设我的数据如下,
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
答案 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
或我们丢失第一行