Как отфильтровать строки, у которых хотя бы один столбец превышает пороговое значение? [Дубликат]

Хотя вышеупомянутые решения должны работать в 90% случаев, но если вы все еще читаете этот ответ !!! Вероятно, вы пытаетесь подключиться к другому серверу, чем предполагалось. Возможно, это связано с конфигурационным файлом, указывающим на другой сервер SQL, чем фактический сервер, с которым вы пытаетесь подключиться.

Произошло со мной по крайней мере.

0
задан yas.f 28 March 2019 в 03:33
поделиться

1 ответ

Мы можем использовать rowSums напрямую

df[rowSums(df[2:4] >= 0.5) > 0, ]

#  Name  Clust1  Clust2   Clust3
#2   BB 0.76946 0.03242 0.029358
#3   CC 0.10990 0.52171 0.283859

Или dplyr версию с filter_at и any_vars

library(dplyr)
df %>%
  filter_at(vars(starts_with("Clust")), any_vars(. >= 0.5))

и в том, что касается исправления вашего В коде упоминается @thelatemail. Вы включаете столбец 1 в rowSums, который является столбцом Name, поэтому вы хотите поместить его в столбцы 2:4. Также мы можем напрямую filter вместо создания новой переменной с mutate, поэтому должно работать следующее.

df %>% filter(rowSums(.[,c(2:4)] >= 0.5) > 0)

Мы также можем использовать версию apply, которая была бы медленной для больших наборов данных

df[apply(df[2:4] >= 0.5, 1, any), ]
0
ответ дан Ronak Shah 28 March 2019 в 03:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: