簡體   English   中英

R中的子集:從多個列中提取邏輯因子

[英]Subset in R: extract logical factor from multiple columns

我想知道如何根據條件對R進行子集化。 我有一個帶有10列的大對象,這8列是合乎邏輯的。 我想從總數8中提取任意4列的所有值TRUE。

見下文。 我創建了一個包含true / false變量名稱的向量。 R將TRUE解釋為1,FALSE解釋為0; 因此,在跨行求和時,我們希望保留總和為4或更大的行。 rowSums(df[,tf_vars]) >= 4創建一個TRUE / FALSE向量,該向量指示該行具有4個或更多true的位置。 (請注意, 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,]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM