首页 > 解决方案 > R:如何在特定列上删除包含小于 -4 和大于 4 的任何值的行?

问题描述

我有以下df:

A  B  C
1  8  2
3  3  -9
2  3  3
1  1  1

我想删除前两行,因为它们包含小于 -4 和大于 4 的值。我的代码对我不起作用:

df[which((df[,c(B,C)]>-4 & df[,c(B,C)] < 4),)]

标签: r

解决方案


在基础 R 中,您可以使用rowSums选择没有小于 -4 或大于 4 的值的行。

cols <- c('B', 'C')
df[rowSums(df[cols] < -4 | df[cols] > 4, na.rm = TRUE) == 0, ]

#  A B C
#3 2 3 3
#4 1 1 1

还有apply

df[apply(df[cols] > -4 & df[cols] < 4, 1, all), ]

数据

df <- structure(list(A = c(1L, 3L, 2L, 1L), B = c(8L, 3L, 3L, 1L), 
    C = c(2L, -9L, 3L, 1L)), class = "data.frame", row.names = c(NA, -4L))

推荐阅读