[英]Subset dataframe by unique values within a column in R
您好,我有一個 dataframe 如
Group COL1 Event
G1 SP1 1
G1 SP2 1
G1 SP3 2
G1 SP3 2
G2 SP4 3
G2 SP7 3
G2 SP5 6
G3 SP1 1
G4 SP1 6
如果Event
是唯一的,我只想保留 COL1(例如,SP3 和 SP5 在 Event 列中是唯一的)。
然后我應該得到:
Group COL1 Event
G1 SP3 2
G1 SP3 2
G2 SP5 6
G3 SP1 1
G4 SP1 6
SP1
和SP2
在Event1
列中為 2,因此它們沒有通過
SP4
和SP7
在Event3
列中為 2,因此它們沒有通過
您可以使用 data.table 按Group
和Event
進行分組,並且僅在唯一 COL1 值( uniqueN(COL1)
)的數量為 1 時返回組內容( .SD
)。
library(data.table)
setDT(df)
df[, if(uniqueN(COL1) == 1) .SD, by = .(Group, Event)]
# Group Event COL1
# 1: G1 2 SP3
# 2: G1 2 SP3
# 3: G2 6 SP5
# 4: G3 1 SP1
# 5: G4 6 SP1
使用的數據:
df <- fread('
Group COL1 Event
G1 SP1 1
G1 SP2 1
G1 SP3 2
G1 SP3 2
G2 SP4 3
G2 SP7 3
G2 SP5 6
G3 SP1 1
G4 SP1 6
')
使用ave
的base R
選項
subset(df, ave(COL1, Group, Event,
FUN = function(x) length(unique(x))) == 1)
# Group COL1 Event
#3 G1 SP3 2
#4 G1 SP3 2
#7 G2 SP5 6
#8 G3 SP1 1
#9 G4 SP1 6
另一個data.table
選項
> setDT(df)[,.SD[uniqueN(COL1)==1],.(Group,Event)]
Group Event COL1
1: G1 2 SP3
2: G1 2 SP3
3: G2 6 SP5
4: G3 1 SP1
5: G4 6 SP1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.