R 如何使用列';数字而不是标签?
以下是玩具示例:R 如何使用列';数字而不是标签?,r,dataframe,R,Dataframe,以下是玩具示例: d1 <- data.frame( inds = 1:8, A = c("Go", "Nah", "Nah", "Go", "Nah", "Nah", "Go", "Go"), B = rep("Nah", 8), C = c("Go", "Nah",
d1 <- data.frame(
inds = 1:8, A = c("Go", "Nah", "Nah", "Go", "Nah", "Nah", "Go", "Go"),
B = rep("Nah", 8), C = c("Go", "Nah", "Nah", "Go", "Go", "Nah", "Nah", "Go")
)
filter(d1, A == "Go" & C == "Go")
我希望这能奏效,但事实并非如此
微小更新:
我得到了我的答案,但我还需要一些更进一步的东西,让被接受的答案帮助我。我想这可能对未来的一些观众有用
假设我的一些列以“_QC”结尾,我需要这些列的索引,然后根据它们的值进行过滤
我就是这样做的:
c1 <- c(grep("_QC", colnames(d1), fixed = TRUE))
filter(d1, across(c1, ~. == "Go"))
c1您可以跨
使用:
library(dplyr)
d1 %>% filter(across(c(2, 4), ~. == 'Go'))
# inds A B C
#1 1 Go Nah Go
#2 4 Go Nah Go
#3 8 Go Nah Go
cols <- c(2, 4)
d1[rowSums(d1[cols] == 'Go') == length(cols), ]
在基数R中,我们可以使用行和
:
library(dplyr)
d1 %>% filter(across(c(2, 4), ~. == 'Go'))
# inds A B C
#1 1 Go Nah Go
#2 4 Go Nah Go
#3 8 Go Nah Go
cols <- c(2, 4)
d1[rowSums(d1[cols] == 'Go') == length(cols), ]
cols我们也可以使用Reduce
frombase R
subset(d1, Reduce(`&`, lapply(d1[c(2, 4)], `==`, 'Go')))
# inds A B C
#1 1 Go Nah Go
#4 4 Go Nah Go
#8 8 Go Nah Go
A数据表
选项
> v <- c(2,4)
> setDT(d1)[, .SD[rowSums(.SD[, v, with = FALSE] == "Go") == length(v)]]
inds A B C
1: 1 Go Nah Go
2: 4 Go Nah Go
3: 8 Go Nah Go
>v setDT(d1)[,.SD[行和(.SD[,v,with=FALSE]=“Go”)==length(v)]]
inds A B C
1:1去不去
2:4去不去
3:8去不去