相关疑难解决方法(0)

删除重复的行

我已经将CSV文件读入R data.frame.某些行在其中一列中具有相同的元素.我想删除该列中重复的行.例如:

platform_external_dbus          202           16                     google        1
platform_external_dbus          202           16         space-ghost.verbum        1
platform_external_dbus          202           16                  localhost        1
platform_external_dbus          202           16          users.sourceforge        8
platform_external_dbus          202           16                    hughsie        1
Run Code Online (Sandbox Code Playgroud)

我只想要其中一行,因为其他行在第一列中具有相同的数据.

r duplicates r-faq

136
推荐指数
8
解决办法
31万
查看次数

查找所有重复行,包括"具有较小下标的元素"

R' duplicated返回一个向量,显示向量或数据帧的每个元素是否是具有较小下标的元素的副本.因此,如果5行数据帧的第3行,第4行和第5行相同,duplicated则会给出向量

FALSE, FALSE, FALSE, TRUE, TRUE
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我真的想得到

FALSE, FALSE, TRUE, TRUE, TRUE
Run Code Online (Sandbox Code Playgroud)

也就是说,我想知道一行是否与具有更大下标的行重复.

r duplicates r-faq

98
推荐指数
4
解决办法
3万
查看次数

使用dplyr查找重复的元素

我尝试使用这里提供的代码用dplyr找到所有重复的元素,如下所示:

library(dplyr)

mtcars %>%
mutate(cyl.dup = cyl[duplicated(cyl) | duplicated(cyl, from.last = TRUE)])
Run Code Online (Sandbox Code Playgroud)

如何转换此处显示的代码以使用dplyr查找所有重复的元素?我上面的代码只是抛出一个错误?或者甚至更好,是否有另一种功能可以比复杂的x[duplicated(x) | duplicated(x, from.last = TRUE)])方法更简洁地实现这一目标?

r dplyr

55
推荐指数
5
解决办法
4万
查看次数

删除R中所有重复项的最快方法

我想删除在矢量中出现多次的所有项目.具体来说,这包括字符,数字和整数向量.目前,我正在使用duplicated()向前和向后(使用fromLast参数).

是否有更高计算效率(更快)的方法在R中执行此操作?下面的解决方案很简单,可以写入/读取,但执行重复搜索两次似乎效率低下.也许使用额外数据结构的基于计数的方法会更好?

例:

d <- c(1,2,3,4,1,5,6,4,2,1)
d[!(duplicated(d) | duplicated(d, fromLast=TRUE))]
#[1] 3 5 6
Run Code Online (Sandbox Code Playgroud)

相关的SO帖子在这里这里.

performance r unique duplicates

11
推荐指数
2
解决办法
2322
查看次数

如何删除重复数据的行(R)

我已经对这个主题进行了快速搜索,但是没有找到以前帖子中的任何内容来解决我的问题.看起来非常直接,但我还是没有想出如何有效地做到这一点.

在下面的数据帧,我想用一个单一的入口(在这种情况下,删除所有的行B500D40).

x_1 <- c("A1", "A1","A1", "B10", "B10", "B10","B10", 
            "B500", "C100", "C100", "C100", "D40", "G100", "G100")
   z_1 <- rnorm(14, 70) 
   z_2 <- rnorm(14, 1.7)
   A <- data.frame(x_1, z_1, z_2)

        x_1      z_1       z_2
1        A1 69.65033 1.5308858
2        A1 68.72687 2.2859416
3        A1 68.32700 0.7994794
4       B10 68.68382 0.5212132
5       B10 70.23359 1.3266729
6       B10 70.68604 4.3823605
7       B10 70.52774 2.2430322
8       B500 69.62868 3.0121398
9       C100 69.41412 2.1895905
10      C100 69.10745 1.7599065
11      C100 69.70876 1.6001099 …
Run Code Online (Sandbox Code Playgroud)

r duplicates dataframe

5
推荐指数
1
解决办法
172
查看次数

在 R 中标记重复项

我有以下数据集:

dataset <- data.frame(id = c("A","A","A","A","B","B","B,"B"),
                      value = c(1,1,2,3,5,6,6,7))
Run Code Online (Sandbox Code Playgroud)

对于每个重复的 id,我想标记它发生的行,并且这个标志应该与数据帧源的长度相同。这是预期的结果:

id    value    flag
A     1        1
A     1        1
A     2        0
A     3        0
B     5        0
B     6        1
B     6        1
B     7        0
Run Code Online (Sandbox Code Playgroud)

有没有办法让我不必使用 for 循环?任何帮助将不胜感激。

r

4
推荐指数
1
解决办法
151
查看次数

R中的多个列表交集

我有4个清单

a <- list(1,2,3,4)
b <- list(5,6,7,8)
c <- list(7,9,0)
d <- list(12,14)
Run Code Online (Sandbox Code Playgroud)

我想知道哪些列表有共同的元素.在此示例中,列出bc具有共同的元素7.

蛮力方法是采用每个列表组合并找到交叉点.在R中还有其他有效的方法吗?

另一种方法是从所有列表中制作单个列表并找到重复的列表.那么也许我们可以有一个映射函数来指示这些重复项来自哪些原始列表.但我不确定如何做到这一点.我遇到过这篇文章

查找重复行的索引

我在想是否可以修改它以找出具有重复项的实际列表.

我必须为许多列表组重复此过程.任何建议/想法都非常感谢!提前致谢

r list set-intersection

3
推荐指数
1
解决办法
1273
查看次数

标签 统计

r ×7

duplicates ×4

r-faq ×2

dataframe ×1

dplyr ×1

list ×1

performance ×1

set-intersection ×1

unique ×1