簡體   English   中英

刪除R中重復的行(基於2列)

[英]Remove duplicated rows (based on 2 columns) in R

我在R中有一個數據集,看起來像這樣:

    x1 x2  x3
1:  A Away  2
2:  A Home  2
3:  B Away  2
4:  B Away  1
5:  B Home  2
6:  B Home  1
7:  C Away  1
8:  C Home  1

基於列x1和x2中的值,我要刪除重復的行。 我嘗試了以下方法:

df[!duplicated(df[,c('x1', 'x2')]),]

它應該刪除第4行和第6行。但是不幸的是,它無法正常工作,因為它返回的數據完全相同,並且重復項仍存在於數據集中。 為了刪除第4行和第6行,我必須使用什么?

我會做:

unique(df, by=c("x1", "x2")) # where df is a data.table

如果您只是看?unique這將是非常明顯的。

PS:給定Q的語法,我想知道您是否知道data.table和data.frame語法之間的基本區別。 我建議您先閱讀小插圖

library("data.table")
setDT(df)[, .SD[1], by = .(x1, x2)]

#     x1   x2 x3
# 1:  A Away  2
# 2:  A Home  2
# 3:  B Away  2
# 4:  B Home  2
# 5:  C Away  1
# 6:  C Home  1

或者您可以使用dplyr

library("dplyr")
df <- data.frame(x1 = c("A","A","B","B","B","B","C","C"), x2 = c("Away","Home","Away","Away","Home","Home","Away","Home"), x3 = c(2,2,2,1,2,1,1,1))

distinct(df,x1,x2,.keep_all = TRUE)
#      x1   x2 x3
#    1  A Away  2
#    2  A Home  2
#    3  B Away  2
#    4  B Home  2
#    5  C Away  1
#    6  C Home  1

暫無
暫無

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

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