【问题标题】:Remove all rows based on multiple columns [duplicate]删除基于多列的所有行[重复]
【发布时间】:2016-03-22 11:24:34
【问题描述】:

以下基本示例:

v1 <- c("a","b","c","a","b")
v2 <- c(1,2,3,1,1)
v3 <- rnorm(5,5) 

dat <- data.frame(cbind(v1,v2,v3))

我想删除 v1 和 v2 中所有具有相同值的行。

要删除重复的行,我可以使用

dat[!duplicated(dat[,c("v1","v2")]),]

   v1 v2 v3
1  a  1 6.48929449801677
2  b  2 4.89050807004701
3  c  3 5.57089903349316
5  b  1 4.08152834124853

但我也想删除第一行。

有没有人有一个简单的解决方案?也许某些选项重复,我无法识别。

【问题讨论】:

标签: r


【解决方案1】:

我们可以使用duplicatedfromLast=TRUE 选项反向搜索重复项,然后使用| 获取所有重复项。对逻辑索引取反只会得到我们稍后子集的唯一行的索引。

dat[!(duplicated(dat[,c("v1","v2")])|
     duplicated(dat[,c("v1", "v2")], fromLast=TRUE)),]

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 2021-11-03
    • 2018-03-07
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多