Подмножество в R: извлечь логический фактор из нескольких столбцов - PullRequest
0 голосов
/ 20 февраля 2019

Я хотел бы знать, как подмножество в R на основе условия.У меня большой объект с 10 столбцами, 8 столбцов логичны.Я хочу извлечь все значения ИСТИНА для любых 4 столбцов из общего числа 8?

1 Ответ

0 голосов
/ 20 февраля 2019

Смотри ниже.Я создаю вектор, который включает имена переменных true / false.R будет интерпретировать TRUE как 1 и FALSE как 0;следовательно, при суммировании по строкам мы хотим сохранить строки, которые имеют сумму 4 или больше.rowSums(df[,tf_vars]) >= 4 создает вектор ИСТИНА / ЛОЖЬ, который указывает, где в строке 4 или более истинных значения.(Обратите внимание, что df[,tf_vars] будет подставлять столбцы данных, оставляя только переменные в tf_vars).Затем я использую этот вектор для подмножества кадра данных.

# Create dummy dataframe
df <- data.frame(matrix(nrow=100, ncol=0))
for(i in 1:8){
  df[[paste0("TFvar",i)]] <- sample(100, x=c(T,F), prob=c(.5,.5), replace=T)
}

# Subset dataframe where at least 4 of the columns are true
tf_vars <- c("TFvar1", "TFvar2", "TFvar3", "TFvar4", "TFvar5", "TFvar6", "TFvar7", "TFvar8")

  # (or you could use this to grab the variable names that are TRUE/FALSE variables.)
  tf_vars <- names(apply(df, FUN=is.logical, 2))


df_subset <- df[rowSums(df[,tf_vars]) >= 4,]
...