我有一个 R 数据框,看起来像这样:
A B C
14 apple 45
14 bannaa 23
15 car 234
16 door 12
16 ear 325
正如您所看到的,14 和 16 是重复的。我想:
A B C
14 apple 45
14 bannaa 23
16 door 12
16 ear 325
到目前为止我已经table(DF$A) > 1
,但是如何/什么是做我想做的事情的最简单方法?
这是另一种可能的基础 R 解决方案
indx <- with(df, ave(A, A, FUN = length))
df[indx > 1, ]
# A B C
# 1 14 apple 45
# 2 14 bannaa 23
# 4 16 door 12
# 5 16 ear 325
或者使用data.table
package
library(data.table)
setDT(df)[, .SD[.N > 1], by = A]
# A B C
# 1: 14 apple 45
# 2: 14 bannaa 23
# 3: 16 door 12
# 4: 16 ear 325
or
setDT(df)[, if(.N > 1) .SD, by = A]
最后,一个额外的解决方案使用rle
## df <- df[order(df$A), ] # If the data isn't sorted by `A`, you''ll need to sort it first
indx <- rle(df$A)$lengths
df[rep(indx > 1, indx), ]
# A B C
# 1 14 apple 45
# 2 14 bannaa 23
# 4 16 door 12
# 5 16 ear 325
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)