2016-04-21 97 views
0

我的目標是統計列中有多少重複。
所以我有一列3516 obs。 1個變量,
,所有日期都有大約144個重複,每個從1/4/16到7/3/16。
示例:(例如,爲了便於說明,每個放置一個副本)
1/4/16
1/4/16
31/3/16
31/3/16
30/3/16
30/3/16
29/3/16
29/3/16
28/3/16
28/3/16
所以我使用了函數date = count(date)
,其中date是我的df日期。
但是一旦我執行它,我的日期順序就不再按順序了。
希望有人能解決我的問題。統計列的重複次數

+0

您的預期產出是多少? –

+0

我想創建另一列,並且在日期旁邊有重複的數目。 –

回答

3

如果我們需要計數的重複總數

sum(table(df1$date)-1) 
#[1] 5 

假設,我們需要每個日期的計數,一個選擇是按「日期」,並獲得行數。這可以通過data.table完成。

library(data.table) 
setDT(df1)[, .N, date] 
+1

感謝這就是我要找的! –

1

如果你想在你列的重複次數的計數,你可以使用duplicated

sum(duplicated(df$V1)) 
#[1] 5 

假設V1作爲列名。

編輯

按照更新,如果你想每一個數據的數量,你可以使用table功能,這將給你正是

table(df$V1) 

#1/4/16 28/3/16 29/3/16 30/3/16 31/3/16 
# 2  2  2  2  2 
+0

我道歉,如果我沒有正確地短語我的問題,我的預期輸出是擦除重複,並有另一列列出重複次數被計數 –

+0

@AmosOng嗨!謝謝。答案已更新。 –

2

一種方法是創建一個數據使用您的初始數據的唯一值保留該順序,然後使用來自dplyr數據包加入兩個數據幀。請注意,您的專欄的名稱應該相同。

Initial_data <- structure(list(V1 = structure(c(1L, 1L, 5L, 5L, 4L, 4L, 3L, 3L, 
2L, 2L, 2L), .Label = c("1/4/16", "28/3/16", "29/3/16", "30/3/16", 
"31/3/16"), class = "factor")), .Names = "V1", class = "data.frame", row.names = c(NA, 
-11L)) 

df1 <- unique(Initial_data) 
count1 <- count(df1) 

left_join(df1, count1, by = 'V1') 
#  V1 freq 
#1 1/4/16 2 
#2 31/3/16 2 
#3 30/3/16 2 
#4 29/3/16 2 
#5 28/3/16 3