r - 如果指定的列小于或等于某个数字,则选择数据框行
问题描述
让我们有一个简单的数据框df
:
A <- c(1,2,3,4)
B <- c(3,4,5,7)
C <- c(3,4,7,3)
df <- data.frame(A,B,C)
# A B C
#1 1 3 3
#2 2 4 4
#3 3 5 7
#4 4 7 3
我想在第 2 列和第 3 列(B,C)中提取一些值小于或等于 4 的行。所以想要的输出:
A B C
1 1 3 3
2 2 4 4
当然,我可以通过以下方式做到这一点:
subset(df, df$B <= 4 & df$C <= 4)
或者
df[df[,2] <= 4 & df[,2] <= 4,]
但是我有很多专栏,我想避免输入所有的东西......
除此之外,为什么这两种解决方案不起作用?
df[df[,c(2,3)] <= 4,]
A B C
1 1 3 3
2 2 4 4
NA NA NA NA
NA.1 NA NA NA
NA.2 NA NA NA
df[apply(df [c('B','C')],1,function(x) x <= 4),]
A B C
1 1 3 3
2 2 4 4
3 3 5 7
4 4 7 3
NA NA NA NA
谢谢!
解决方案
在两种失败情况下的修复:
df[rowSums(df[, c(2,3)] <= 4) == 2,] ## or df[rowSums(df[c(2,3)] <= 4) == 2,]
df[apply(df[c('B','C')] <= 4, 1, all), ]
推荐第一个。
推荐阅读
- reactjs - 在 React 中为多个文本子项实现 Read More 功能
- c# - 使用 Moq 验证属性多次更改
- excel - 启用和禁用下拉列表
- algorithm - 寻找动态规划问题的递归公式
- python - 尝试使用 conda install 来获得 anaconda-clean 但环境无法解决,并且开始对冲突进行非常缓慢的分析
- python - 如何在 python 中的一行中找到最多的重叠子字符串?
- php - 从自定义包中加载固定装置
- cmake - 使用什么 CMake 项目结构:多个应用程序、插件、配置
- c# - 在 C# 中,文本文件未显示到控制台
- javascript - $( document ).on('turbolinks:load', function() { 不工作