2 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
這將返回邏輯索引向量:
duplicated(df) | duplicated(df[nrow(df):1, ])[nrow(df):1]
這是一個(gè)例子:
df <- data.frame(a = c(1,2,3,4,1,5,6,4,2,1))duplicated(df) | duplicated(df[nrow(df):1, ])[nrow(df):1]#[1] TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUEwhich(duplicated(df) | duplicated(df[nrow(df):1, ])[nrow(df):1])#[1] 1 2 4 5 8 9 10
更新(基于注釋):
如果fromLast = TRUE
用作函數(shù)參數(shù),則可以減少命令的復(fù)雜性。這比創(chuàng)建兩個(gè)反向向量更容易。
duplicated(df) | duplicated(df, fromLast = TRUE)duplicated(df) | duplicated(df, fromLast = TRUE)#[1] TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE
這個(gè)怎么運(yùn)作?
該功能duplicated
以相反的行順序應(yīng)用于原始數(shù)據(jù)幀和數(shù)據(jù)幀。后者的輸出再次逆轉(zhuǎn)。請(qǐng)注意,原始數(shù)據(jù)中第一次出現(xiàn)的重復(fù)值是反轉(zhuǎn)版本中的最后一次出現(xiàn)。此后,這兩個(gè)向量使用組合|
由于TRUE
它們中的至少一個(gè)表示重復(fù)的值。

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果您使用的是鍵控 data.table,則可以使用以下優(yōu)雅語法
library(data.table)DT <- data.table(A = rep(1:3, each=4), B = rep(1:4, each=3), C = rep(1:2, 6), key = "A,B,C")DT[unique(DT[duplicated(DT)]),which=T]
打開包裝
DT[duplicated(DT)]
子集那些重復(fù)的行。unique(...)
僅返回重復(fù)行的唯一組合。這涉及任何重復(fù)超過1的案例(重復(fù)重復(fù),例如重復(fù)等)DT[..., which = T]
將重復(fù)的行與原始行合并,并which=T
返回行號(hào)(沒有which = T
它只會(huì)返回?cái)?shù)據(jù))。
你也可以用
DT[,count := .N,by = list(A,B,C)][count>1, which=T]
- 2 回答
- 0 關(guān)注
- 724 瀏覽
添加回答
舉報(bào)