gpt4 book ai didi

r - 对列值大于阈值的行进行子集化

转载 作者:行者123 更新时间:2023-12-05 00:58:55 28 4
gpt4 key购买 nike

我有一个包含 70 列的数据集。

我想对数据集的整个行进行子集化,其中第 5 到 70 列中的任何列中的值都大于值 7。

我尝试了以下代码,但是,我不想要 TRUE/FALSE 值。我只想从数据框中消除不符合标准的行

subset <- (data[, 5:70] > 7)

最佳答案

我们可以使用 rowSums

data[rowSums(data[5:70] > 7) > 0, ]

或与子集

subset(data, rowSums(data[5:70] > 7) > 0)

我们也可以使用 dplyr 中的 filter_atany_vars

library(dplyr)
data %>% filter_at(vars(5:70), any_vars(. > 7))

使用来自 mtcars 的可重现数据(从 @Maurits Evers 窃取的想法)

mtcars[rowSums(mtcars[3:11] > 300) > 0, ]

# mpg cyl disp hp drat wt qsec vs am gear carb
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4
#Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4
#Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4
#Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
#Dodge Challenger 15.5 8 318 150 2.76 3.520 16.87 0 0 3 2
#AMC Javelin 15.2 8 304 150 3.15 3.435 17.30 0 0 3 2
#Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4
#Pontiac Firebird 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2
#Ford Pantera L 15.8 8 351 264 4.22 3.170 14.50 0 1 5 4
#Maserati Bora 15.0 8 301 335 3.54 3.570 14.60 0 1 5 8

使用 filter_at 也可以得到相同的输出

mtcars %>% filter_at(vars(3:11), any_vars(. > 300))

关于r - 对列值大于阈值的行进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583699/

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