R:根据多列中的值选择行

标签 r

我有一个数据框,其中有许多列带有公共(public)前缀“_B”,例如“_B1”、“_B2”、...“_Bn”。 这样我就可以通过以下方式获取列名:

allB <- c(grep( "_B" , names( my.df ),value = TRUE ) )

我希望选择这些 _B* 列中的每一个都通过单个条件(如 values >= some_cutoff)的行

谁能告诉我该怎么做,我对“all()”和“any()”的努力失败了

set.seed(12345)     
my.df <- data.frame(a = round(rnorm(10,5),1), m_b1= round(rnorm(10,4),1),m_b2=round(rnorm(10,4),1))
allB <- c(grep( "_b" , names( my.df ),value = TRUE ) )
> my.df
     a m_b1 m_b2
1  5.6  3.9  4.8
2  5.7  5.8  5.5
3  4.9  4.4  3.4
4  4.5  4.5  2.4
5  5.6  3.2  2.4
6  3.2  4.8  5.8
7  5.6  3.1  3.5
8  4.7  3.7  4.6
9  4.7  5.1  4.6
10 4.1  4.3  3.8

我希望选择每个 m_b1 和 m_b2 列 >= 4.0 的行

最佳答案

我们可以使用 dplyr 中的 filter_at,并指定 all_vars(如果行中的所有值都满足条件。如果是任何行中的值,它将是 any_vars)

library(dplyr)
my.df %>%
   filter_at(allB, all_vars(. >= some_cutoff))

数据

some_cutoff <- 3
my.df <- structure(list(`_B1` = c(1, 1, 9, 4, 10), `_B2` = c(2, 3, 12, 
 6, 12), V3 = c(3, 6, 13, 10, 13), V4 = c(4, 5, 16, 13, 18)), .Names = c("_B1", 
 "_B2", "V3", "V4"), row.names = c(NA, -5L), class = "data.frame")

allB <- grep( "_B" , names( my.df ),value = TRUE ) 

关于R:根据多列中的值选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49303243/

相关文章:

r - 如何在 R 中显示 Simper() 的 P 和全局 R?

python - 计算 R 或 Python 中同一列中行值 A 和行值 B 的事件发生次数

r - 如何获得约 1000 个蛋白质的成对 "sequence similarity score"?

r - 使用 dplyr 转置时间序列(有滞后的变异)

r - 在 R 中输入联合符号

r - 否定 Data.Table 包中的 %like% |电阻

r - ggplot2:贴标机中的摄氏度符号,knitr 中带有 dev ="tikz"选项

具有多个条件的 R strsplit()

r - 如何在不将输出 tibble 保存为 R 中的单独对象的情况下将输出 tibble 传递到进一步的计算中?

r - 如何使用 qplot 随时间绘制页面 View ?