使用 dplyr R 中的 last_col() 函数过滤数据框
Filter data frame using the last_col() function in dplyr R
我有多个看起来像这样的数据框
time <- c(1,1,1,1,2,2,2,2,3,3,3,3)
ID <- c(1,2,3,4,1,2,3,4,1,2,3,4)
value <- c(0,0.1,0.2,0.4,0,0.05,0.05,0.5,0.20,0.40,0.50,0.60)
test <- data.frame(time, ID, value)
test
time ID value
1 1 1 0.00
2 1 2 0.10
3 1 3 0.20
4 1 4 0.40
5 2 1 0.00
6 2 2 0.05
7 2 3 0.05
8 2 4 0.50
9 3 1 0.20
10 3 2 0.40
11 3 3 0.50
12 3 4 0.6
我希望能够根据最后一列中小于 0.05 的值过滤数据框。
我知道我可以在 baseR test[,ncol(test)] <0.05
中轻松使用
有没有一种方法可以将它合并到 dplyr 管道中或使用 last_col() 函数
类似于:test %>% filter(.,last_col()<0.05)
感谢任何帮助
dplyr >= 1.0.0
使用dplyr::across
:
df %>%
dplyr::filter(across(last_col(), ~ . < 0.05))
across
在这里工作,因为 last_col
returns 是一个单独的列。如果您使用多个列,我建议使用 if_any
或 if_all
(取决于您的逻辑)。有关详细信息,请参阅此 。
dplyr < 1.0.0
使用filter_at
:
df %>%
dplyr::filter_at(vars(last_col()), ~ . < 0.05)
vars
和 last_col
也来自 dplyr
包。
我用下面的代码用dplyr和filter过滤
library(dplyr)
time <- c(1,1,1,1,2,2,2,2,3,3,3,3)
ID <- c(1,2,3,4,1,2,3,4,1,2,3,4)
value <- c(0,0.1,0.2,0.4,0,0.05,0.05,0.5,0.20,0.40,0.50,0.60)
test <- data.frame(time, ID, value)
test.filter <- test %>%
filter(value <= 0.05)
此语法找出最后一列的变量名,并使用基本过滤器
test %>% filter(!!sym((variable.names(test))[ncol(test)]) < 0.05)
我有多个看起来像这样的数据框
time <- c(1,1,1,1,2,2,2,2,3,3,3,3)
ID <- c(1,2,3,4,1,2,3,4,1,2,3,4)
value <- c(0,0.1,0.2,0.4,0,0.05,0.05,0.5,0.20,0.40,0.50,0.60)
test <- data.frame(time, ID, value)
test
time ID value
1 1 1 0.00
2 1 2 0.10
3 1 3 0.20
4 1 4 0.40
5 2 1 0.00
6 2 2 0.05
7 2 3 0.05
8 2 4 0.50
9 3 1 0.20
10 3 2 0.40
11 3 3 0.50
12 3 4 0.6
我希望能够根据最后一列中小于 0.05 的值过滤数据框。
我知道我可以在 baseR test[,ncol(test)] <0.05
中轻松使用
有没有一种方法可以将它合并到 dplyr 管道中或使用 last_col() 函数
类似于:test %>% filter(.,last_col()<0.05)
感谢任何帮助
dplyr >= 1.0.0
使用dplyr::across
:
df %>%
dplyr::filter(across(last_col(), ~ . < 0.05))
across
在这里工作,因为 last_col
returns 是一个单独的列。如果您使用多个列,我建议使用 if_any
或 if_all
(取决于您的逻辑)。有关详细信息,请参阅此
dplyr < 1.0.0
使用filter_at
:
df %>%
dplyr::filter_at(vars(last_col()), ~ . < 0.05)
vars
和 last_col
也来自 dplyr
包。
我用下面的代码用dplyr和filter过滤
library(dplyr)
time <- c(1,1,1,1,2,2,2,2,3,3,3,3)
ID <- c(1,2,3,4,1,2,3,4,1,2,3,4)
value <- c(0,0.1,0.2,0.4,0,0.05,0.05,0.5,0.20,0.40,0.50,0.60)
test <- data.frame(time, ID, value)
test.filter <- test %>%
filter(value <= 0.05)
此语法找出最后一列的变量名,并使用基本过滤器
test %>% filter(!!sym((variable.names(test))[ncol(test)]) < 0.05)