在R中如何筛选值为1的factor列并统计家族条目数量?
R语言数据处理解决方案
需求一:筛选数据框中仅包含值为1的factor类型列
可以通过遍历数据框列,同时判断列类型与列内值的情况实现:
# 假设目标数据框名为df # 筛选符合条件的列 target_cols <- df[, sapply(df, function(col) { is.factor(col) && all(col == "1") })]
- 逻辑说明:
sapply遍历每一列,先通过is.factor()判断是否为factor类型,再用all(col == "1")验证列内所有元素值均为1(factor类型取值为字符型,需匹配"1"),最后用逻辑向量筛选出目标列。
需求二:统计家族ID列的单条目家族数与总家族数
提供两种实现方式,可按需选择:
方法1:基础R函数实现
# 假设家族ID列名为family_id # 统计每个家族的记录数 family_count_table <- table(df$family_id) # 计算总家族数 total_families <- length(family_count_table) # 计算仅含1条记录的家族数量 single_families <- sum(family_count_table == 1) # 输出结果 cat("总家族数:", total_families, "\n") cat("单条目家族数:", single_families, "\n")
方法2:dplyr包实现(简洁直观)
library(dplyr) # 统计所需指标 family_stats <- df %>% count(family_id) %>% summarize( 总家族数 = n(), 单条目家族数 = sum(n == 1) ) # 查看结果 print(family_stats)
内容的提问来源于stack exchange,提问作者Ar1229
相关产品推荐
相关产品推荐

