У меня есть фрейм данных со многими столбцами и строками, например
id column1 column2 column3
1 2 3 5
2 3 2 6
3 4 1 3
4 1 1 2
5 3 3 2
6 5 2 1
Как выбрать столбец (кроме id), максимальное значение которого больше определенного значения, например 5 в примере данных?
Таким образом, выбранные данные должны быть:
id column1 column3
1 2 5
2 3 6
3 4 3
4 1 2
5 3 2
6 5 1
Буду признателен за любую помощь по моему вопросу. Большое спасибо!
Для этого требуется сначала найти эти максимальные значения, а затем, соответственно, подмножить фрейм данных, как в
df[c(TRUE, apply(df[-1], 2, max) >= 5)]
# id column1 column3
# 1 1 2 5
# 2 2 3 6
# 3 3 4 3
# 4 4 1 2
# 5 5 3 2
# 6 6 5 1
куда
apply(df[-1], 2, max)
# column1 column2 column3
# 5 3 6
и добавление TRUE
также сохраняет столбец id
.
Несколько способов сделать это.
Использование базы R
cbind(df[1], df[-1][sapply(df[-1], function(x) any(x >=5))])
# id column1 column3
#1 1 2 5
#2 2 3 6
#3 3 4 3
#4 4 1 2
#5 5 3 2
#6 6 5 1
Мы также можем использовать colSums
в логической матрице после сравнения с >= 5
cbind(df[1], df[-1][colSums(df[-1] >= 5) > 0])
Или с Filter
cbind(df[1], Filter(function(x) any(x >= 5), df[-1]))
Или с помощью dplyr
library(dplyr)
bind_cols(df[1], df %>%
select(-1) %>%
select_if (~any(. >=5)))