簡體   English   中英

在列的數據框中查找相同的觀察值但在另一列中不同

[英]Find identical observations in a column´s data frame but different in another column

在 R 中,我有一個包含 ID 列的數據框。 我需要找到所有具有相同 ID 但在 X1 變量中不同的行。

例如,

d

ID    X1     X2
a    19      F
b    19      F
c    16      T
a    16      T 
a    19      T
d    17      T 
b    15      F 
b    19      F
c    17      T
c    17      T
d    17      T
e    15      T
f    14      T
g    16      T

結果將是:

df1

ID    X1     X2
a    19      F
b    19      F
c    16      T
a    16      T 
b    15      F 
c    17      T
t      <- table(d$X1, d$ID)
t[t>1] <- 1
t      <- apply(t,2,sum)
t      <- t[t>1]

d1 <- data.frame(ID = names(t))
d1 <- merge(d1, d, by = "ID", all.x=T,all.y=F)
d1 <- unique(d1[,1:2])
d1
 ID X1 1 a 19 2 a 16 4 b 15 5 b 19 7 c 16 8 c 17

我們也可以包含第 3 列,但您需要給出一些邏輯來選擇要保留的值。 舉例來說,有2個取值a ,其中X1為19,一個與X2 T和一個它被F.到2之間選擇,你可以保留第一個匹配行的X2 ,最后還是選擇T上方樓等.

我們可以先刪除單個 id。 然后計算剩余的 id。 如果只剩下一個 id,我們將其刪除:

newdf <- df1[duplicated(df1$ID, fromLast=TRUE),]
tbl <- table(newdf$ID)
newdf[!newdf$ID %in% names(tbl[tbl < 2]),]
#   ID X1    X2
# 1  a 19 FALSE
# 2  b 19 FALSE
# 3  c 16  TRUE
# 4  a 16  TRUE
# 7  b 15 FALSE
# 9  c 17  TRUE

這行得通嗎?

df1[rownames(unique(df1[,c("ID","X1")])),]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM