通过保留所有行来查找重复的行数

时间:2014-04-08 19:17:40

标签: r dataframe duplicates

我有一个数据框df1

df1:

    a  c
1:  1  6
2:  2  8
3:  3  1
4: 45  3
5:  2  8

我需要找到重复的行数,但也要保留重复的行。结果应该是:

    a  c count
1:  1  6   1
2:  2  8   2
3:  3  1   1
4: 45  3   1  
5:  2  8   2

因为第2行和第5行是重复的。但我只能得到能给出答案的解决方案

    a  c count
1:  1  6   1
2:  2  8   2
3:  3  1   1
4: 45  3   1  

 df1<-data.table(df1)    
 df1[, .N, by = list(a,c)]

我怎样才能得到理想的结果?

2 个答案:

答案 0 :(得分:3)

您也可以在base R:

中执行此操作
df1$count <- with(df1, ave(a, list(a, c), FUN = length))

df1
#     a c count
# 1:  1 6     1
# 2:  2 8     2
# 3:  3 1     1
# 4: 45 3     1
# 5:  2 8     2

答案 1 :(得分:3)

为了完整起见,这是dplyr的方法

df <- data.frame(
  a = c(1, 2, 3, 45, 2),
  c = c(6, 8, 1, 3, 8)
)

library(dplyr)

df %.% group_by(a, c) %.% mutate(count = n())

## Source: local data frame [5 x 3]
## Groups: a, c
## 
##    a c count
## 1  1 6     1
## 2  2 8     2
## 3  3 1     1
## 4 45 3     1
## 5  2 8     2