gpt4 book ai didi

R dplyr select_if 具有多个条件

转载 作者:行者123 更新时间:2023-12-02 23:31:58 25 4
gpt4 key购买 nike

我想选择所有数值变量以及按名称选择一些变量。我已设法使用 select_if 来获取数字变量,并使用 select 来按名称获取变量,但无法将两者合并为一个语句

x = data.table(c(1,2,3),c(10,11,12),c('a','b','c'),c('x','y','z'), c('l', 'm','n'))

我希望我的结果是:

V1 V2 V4 V5
1 10 x l
2 11 y m
3 12 z n

我试过了,但没用

y = x %>%
select_if(is.numeric, V4, V5)

最佳答案

如果我们有一个数据框,x:

x = data.frame(V1=c(1,2,3),V2=c(10,11,12),V3=c('a','b','c'),V4=c('x','y','z'),V5=c('l', 'm','n'), stringsAsFactors=FALSE)
## V1 V2 V3 V4 V5
##1 1 10 a x l
##2 2 11 b y m
##3 3 12 c z n

其中V1V2实际上是数字并且其余列不是因子,那么我们可以这样做:

library(dplyr)
y <- x %>% select_if(function(col) is.numeric(col) |
all(col == .$V4) |
all(col == .$V5))
## V1 V2 V4 V5
##1 1 10 x l
##2 2 11 y m
##3 3 12 z n

并不是说这是最好的做法,但它确实可以满足您的要求。这里的问题是 select_if 期望其函数返回与所有列相对应的 bool 向量。

另一种方法是使用select:

y <- x %>% select(which(sapply(.,class)=="numeric"),V4,V5)
## V1 V2 V4 V5
##1 1 10 x l
##2 2 11 y m
##3 3 12 z n

哪个可能更好。

关于R dplyr select_if 具有多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39592879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com