【问题标题】:Having trouble keeping all variables after removing duplicates from a dataset从数据集中删除重复项后无法保留所有变量
【发布时间】:2015-09-17 19:59:43
【问题描述】:

因此,我导入了一个包含 178 个观测值和 8 个变量的数据集。然后最终目标是消除其中三个变量(2、5 和 6)中相同的所有观察值。事实证明,使用独特的命令非常容易。

mav2 <- unique(mav[,c(2,5,6)])

生成的mav2 数据框产生了 55 个观察值,消除了所有重复!不幸的是,它还去掉了我在唯一命令中没有使用的其他五个变量(1、3、4、7 和 8)。我最初尝试添加两个数据框,当然这不起作用,因为它们的大小不等。我也尝试过将两者合并,但这失败了,只是给出了第一个数据集的输出,其中包含所有 178 个观察值。

第二个数据集 (mav2) 确实生成了一个新列 (row.names),它是初始数据集中每个观察值的行号。

如果有人可以帮助我将所有 8 个初始变量放入只有 55 个独特观察值的数据集中,我将不胜感激。提前致谢。

【问题讨论】:

  • 如果您使用data.table,则unique 函数有一个by 参数。
  • 您能提供一个样本mav 数据集吗?这使您的问题更具重现性:stackoverflow.com/questions/5963269/…
  • 很遗憾,我无法分享实际数据

标签: r variables duplicates


【解决方案1】:

我想你想要的是duplicated,一个类似于unique 的函数,它返回重复元素的索引。

所以

mav2 <- mav[!duplicated(mav[,c(2,5,6)]),]

编辑:duplicated 的倒置感

【讨论】:

  • 非常感谢,这正是我想要的!
  • @Brent 在这种情况下,您介意接受答案吗?
【解决方案2】:

你可以试试这个

mav$key <- 1:nrow(mav)
mav2 <- unique(mav[,c(2,5,6)])
mav_unique <- mav[mav$key%in%mav2$key,]
mav_unique$key <- NULL

编辑:解决关键问题

 rownames(mav) <- 1:nrow(mav) #to make sure they are correctly set
 mav2 <- unique(mav[,c(2,5,6)])
 mav_unique <- mav[rownames(mav)%in%rownames(mav2),]

【讨论】:

    【解决方案3】:

    您可以尝试这样做。

    mav[!(mav$v2==mav$v5 & mav$v5==mav$v6),]
    

    例子:

    mav <- data.frame(v1=c(1,2,3),v2=c(2,6,4),v3=c(4,5,6),v4=c(1,5,2),v5=c(5,6,7),v6=c(5,6,8),v7=c(7,4,5),v8=c(6,3,1))
    
    mav
      v1 v2 v3 v4 v5 v6 v7 v8
    1  1  2  4  1  5  5  7  6
    2  2  6  5  5  6  6  4  3
    3  3  4  6  2  7  8  5  1
    

    现在在上述数据框中,列 v2、v5、v6 中的第二行具有相同的值 6。

    执行以下操作。

    mav <- mav[!(mav$v2==mav$v5 & mav$v5==mav$v6),]
    

    给你

    mav
      v1 v2 v3 v4 v5 v6 v7 v8
    1  1  2  4  1  5  5  7  6
    3  3  4  6  2  7  8  5  1
    

    保留所有其他列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-30
      • 2018-12-21
      • 1970-01-01
      • 2014-08-22
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多