当前位置: 首页 > 知识库问答 >
问题:

查找数据中哪一行与哪一行重复。框架

姜业
2023-03-14

我有一份数据。像这样的框架:

data.frame(matrix(c(11:13, 21:23, 11:13, 11:13, 31:33, 41:43, 31:33), byrow = TRUE, ncol = 3))

现在我想知道哪一行是哪一行的重复,返回一个重复的行号最低的索引向量.如果一行不是前一行的重复,它应该得到下一个可用的索引。在这个例子中,输出应该是:

c(1, 2, 1, 1, 3, 4, 3)

我可以通过在所有行对之间循环来实现这一点,但必须有一种有效的方法来实现这一点。

不幸的是,duplicated只显示哪些行是重复的,而不显示它们完全重复的行。有没有一个功能可以在这里提供帮助?

共有3个答案

江鹏飞
2023-03-14

或者,您可以使用dplyr中的group\u索引

dplyr::group_indices(df, X1, X2, X3)
# [1] 1 2 1 1 3 4 3

其中,X1、X2和X3是数据帧的列名。

芮瑾瑜
2023-03-14

在较新版本的R中使用分组功能的另一种选择。

获取相同值相邻放置的行的顺序:

grs = do.call(grouping, dat)

并操纵结果的“属性”以获得想要的结果:

ends = attr(grs, "ends")
rep(seq_along(ends), c(ends[1], diff(ends)))[order(grs)]
#[1] 1 2 1 1 3 4 3
厉高逸
2023-03-14

这就是你想要的吗?

# Your data
d <- data.frame(matrix(c(11:13, 21:23, 11:13, 11:13, 31:33, 41:43, 31:23), byrow = TRUE, ncol = 3))

# Indices of unique rows 
idx <- as.numeric(factor(apply(d, 1, paste, collapse = "_"), 
                         levels = unique(apply(d, 1, paste, collapse = "_"))));
print(idx);
[1] 1 2 1 1 3 4 5 6 7
 类似资料:
  • 问题内容: 如何找到重复的行?如果last_name是重复字段,我想显示 任何数据库都可以,最好是oracle。 问题答案: 假设您的服务器具有GROUP_CONCAT,因为您没有提及正在使用的服务器:

  • 问题内容: 这个问题已经在这里有了答案 : 在PHP中,最好使用$ array [] = $ value或array_push($ array,$ value)? (10个答案) 4年前关闭。 我需要将从MySQL接收的值添加到数组(PHP)中。这是我所拥有的: 这是唯一的方法吗? 另外 ,以下方法更快/更好吗? 问题答案: 您可以运行它,发现在某些情况下array_push速度较慢: http:

  • 我有两个Pandas Dataframe和,其中是的一部分,我想创建一个Dataframe,其中包含中的code>。 以下是一个例子: 注: 我的DataFrame可能有多个列,但是必须仅在列上进行匹配。

  • 1.3. 查找重复的行 对文件做拷贝、打印、搜索、排序、统计或类似事情的程序都有一个差不多的程序结构:一个处理输入的循环,在每个元素上执行计算处理,在处理的同时或最后产生输出。我们会展示一个名为dup的程序的三个版本;灵感来自于Unix的uniq命令,其寻找相邻的重复行。该程序使用的结构和包是个参考范例,可以方便地修改。 dup的第一个版本打印标准输入中多次出现的行,以重复次数开头。该程序将引入i

  • 我有一个这样的csv文件: 我必须按“姓名”和“出生日期”(可能与其他列一起)查找唯一的行,但必须按最大日期查找。 因此,我必须获得如下csv文件: 怎么做?我没有任何想法。。

  • 我有以下数据框: 我想将其转换为: i、 e.我希望保留前4列,但将剩余的每列值分配到单独的行中。有没有一种不使用for循环的方法来实现这一点?