理解R的任何重复的快速问题,当传递给数据帧时(假设xyz列具有1k观测值)将检查是否有任何行具有与另一行完全相同的xyz值相同的数据帧?感谢
答案 0 :(得分:1)
我会使用duplicated
并将其从前到后合并。
mydf <- data.frame(x = c(1:3,1,1), y = c(3:5,3,3))
mydf
# x y
# 1 1 3
# 2 2 4
# 3 3 5
# 4 1 3
# 5 1 3
有三个重复的行1,4和5.但'重复'只会标记重复的内容而不是原始值。
duplicated(mydf)
#[1] FALSE FALSE FALSE TRUE TRUE
duplicated(mydf, fromLast = TRUE)
#[1] TRUE FALSE FALSE TRUE FALSE
使用从最后到最后的外观来包含原始值。顺便说一句,我会要求R核心团队添加一个统一的功能来完成这两项工作。
myduplicates <- duplicated(mydf) | duplicated(mydf, fromLast = TRUE)
将表达式保存为变量允许我们稍后计算和子集。
sum(myduplicates)
#[1] 3
mydf[myduplicates,]
# x y
# 1 1 3
# 4 1 3
# 5 1 3
mydf[!myduplicates,]
# x y
# 2 2 4
# 3 3 5