我做了一個簡單的資料如下:
data<-data.frame(id=c(1,1,1,2,2,2,3,3,4,4),
a=c(0,0,1,0,0,0,1,1,1,1),
b=c(1,0,0,0,0,0,0,1,1,0))
id代表一個人的特定身份證號碼。我現在要做的是如果等于 1,則洗掉整個。 Aso,id如果a等于 1,我想洗掉整個。在此示例中,所需的輸出應如下所示:idb
data<-data.frame(id=c(2,2,2),
a=c(0,0,0),
b=c(0,0,0))
在我的實際資料中,有數百個id,所以我想知道這樣做的方法。
uj5u.com熱心網友回復:
與Base R,
data[!(data$id %in% unique(data[(data$a == 1) | (data$b == 1),"id"])),]
給,
# id a b
# 4 2 0 0
# 5 2 0 0
# 6 2 0 0
uj5u.com熱心網友回復:
在dplyr, 與if_all:
data %>%
group_by(id) %>%
filter(if_all(a:b, ~ all(.x != 1)))
# id a b
# 1 2 0 0
# 2 2 0 0
# 3 2 0 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517949.html
