R 哪些组包含值更优雅的代码?
如果一个组的一个成员包含一个特定的值,我试图找到一种更优雅的方法来提取数据帧的所有行。例如:R 哪些组包含值更优雅的代码?,r,R,如果一个组的一个成员包含一个特定的值,我试图找到一种更优雅的方法来提取数据帧的所有行。例如: id <- c(1,1,2,2,2,3,4,4,5,5) cat <- c("A", "B", "A", "B", "C", "B", "C", "D", "A", "E") mydf <- data.frame(id, cat) id cat 1 A 1 B 2 A 2 B 2 C 3 B 4 C 4 D 5 A 5 E id试试看 或者,
id <- c(1,1,2,2,2,3,4,4,5,5)
cat <- c("A", "B", "A", "B", "C", "B", "C", "D", "A", "E")
mydf <- data.frame(id, cat)
id cat
1 A
1 B
2 A
2 B
2 C
3 B
4 C
4 D
5 A
5 E
id试试看
或者,如果需要删除所选组中带有“C”的行,请使用&cat!='C'
mydf%>%
group_by(id) %>%
filter( any(cat=='C')& cat!='C')
# id cat
#1 2 A
#2 2 B
#3 4 D
或使用data.table
library(data.table)
setDT(mydf)[,.SD[any(cat=='C') & cat!='C'] , id]
# id cat
#1: 2 A
#2: 2 B
#3: 4 D
试一试
或者,如果需要删除所选组中带有“C”的行,请使用&cat!='C'
mydf%>%
group_by(id) %>%
filter( any(cat=='C')& cat!='C')
# id cat
#1 2 A
#2 2 B
#3 4 D
或使用data.table
library(data.table)
setDT(mydf)[,.SD[any(cat=='C') & cat!='C'] , id]
# id cat
#1: 2 A
#2: 2 B
#3: 4 D
像这样的
subset(mydf, id %in% id[cat=="C"])
## id cat
## 3 2 A
## 4 2 B
## 5 2 C
## 7 4 C
## 8 4 D
或用于非交互式使用
mydf[mydf$id %in% mydf$id[mydf$cat == "C"],]
像这样的
subset(mydf, id %in% id[cat=="C"])
## id cat
## 3 2 A
## 4 2 B
## 5 2 C
## 7 4 C
## 8 4 D
或用于非交互式使用
mydf[mydf$id %in% mydf$id[mydf$cat == "C"],]