簡體   English   中英

R:僅提取數據幀中唯一的條目

[英]R: pulling only entries which are unique from a dataframe

我期待僅拉出數據框在其中出現一次的條目。 舉個例子:

 DataFrame1 Col1 Col2 ABC 5 DEF 6 DEF 7 HIJ 8 

我只想拉:

 DataFrame2 ABC HIJ 

唯一性僅由Col1決定。

有任何想法嗎?

謝謝!

這有點麻煩,但這有效:

x <- table(DataFrame1[, 1]) == 1
DataFrame2 <- na.omit(data.frame(ifelse(x, names(x),NA)))

或者更優雅地使用sql:

library(sqldf)

DataFrame2 <- sqldf('select Col1 from DataFrame1 group by Col1 having count(Col1) = 1')

您可以使用ave根據以下內容創建col1和subset中值的計數向量:

mydf[with(mydf, ave(Col1, Col1, FUN = length)) == "1", ]
#   Col1 Col2
# 1  ABC    5
# 4  HIJ    8

或者,類似地,使用“data.table”:

library(data.table)
DT <- data.table(mydf)
DT[, id := .N, by = Col1][id == 1]
#    Col1 Col2 id
# 1:  ABC    5  1
# 2:  HIJ    8  1

如果從兩個方向運行兩次,重復也可以工作:

mydf[!(duplicated(mydf$Col1) | duplicated(mydf$Col1, fromLast=TRUE)), ]
#   Col1 Col2
# 1  ABC    5
# 4  HIJ    8

unique幫助頁面中有一個可以幫助您的duplicate的引用(雖然我沒有測試過):

dup <- duplicate(DataFrame1$Col1)
DataFrame2 <- DataFrame1[!dup]

或者是子集

DataFrame2 <- subset(DataFrame1, subset=!dup)

怎么樣:

#If you want just the unique 
DataFrame1[which(table(DataFrame1[,"Col1"])==1),"Col1"]values.

#If you want the whole corresponding row.
DataFrame1[which(table(DataFrame1[,"Col1"])==1),]

暫無
暫無

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

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