r - 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 中,您可以使用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))
推荐阅读
- arrays - QT如何解析数组json中的对象
- opencv - 找到矩形内部角点
- corda - Building cordapp jar and deploy in new node
- c# - Xamarin.Forms 中 Xaml 中的 Device.OS
- android - androidx.constraintlayout.widget.constraintlayout 没有可以拖动的链
- bash - 在 bash 中循环读取文件会跳过第三行的前 2 个字符
- javascript - 我不明白为什么我们应该包含 var result=false 和 result=true
- c++ - 使用数组创建成绩范围
- visual-studio - “附加到进程”不显示在我自己的帐户下运行的 IIS 工作线程
- numpy - 如何找到两条曲线的交点?