You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何统计数据框多列及列组合的非空字符串行数

R语言多列非空值及组合共现统计方案

实现代码

无需安装第三方包,base R即可实现需求:

# 定义待统计的目标列
target_cols <- c("FirstCon", "SeconCon", "Upcond")

# 生成非空标记矩阵:非空字符串标记为TRUE,空字符串标记为FALSE
non_empty_mat <- as.data.frame(
  lapply(df[target_cols], function(x) x != "")
)

# 计算单列非空行数
single_count <- colSums(non_empty_mat)

# 计算两两列同时非空的行数
pair_combs <- combn(target_cols, 2, simplify = FALSE)
pair_count <- sapply(pair_combs, function(col_group) {
  sum(rowSums(non_empty_mat[col_group]) == length(col_group))
})
names(pair_count) <- sapply(pair_combs, paste0, collapse = "")

# 计算三列同时非空的行数
triple_count <- sum(rowSums(non_empty_mat[target_cols]) == length(target_cols))
names(triple_count) <- paste0(target_cols, collapse = "")

# 合并输出最终结果
final_result <- as.data.frame(t(c(single_count, pair_count, triple_count)))

输出结果

运行后得到的final_result完全匹配预期格式:

FirstCon SeconCon Upcond FirstConSeconCon FirstConUpcond SeconConUpcond FirstConSeconConUpcond
1       11        4      3                4              2              2                      2

统计规则说明

  • 单字段统计:对每个目标列,统计列内非空字符串的总行数。
  • 多字段组合统计:逐行判断组合内所有字段是否均为非空字符串,满足条件的行计入计数,不要求不同字段的字符串内容一致。例如FirstConSeconCon计数为4,对应数据中第4、10、11、12行;三列同时非空的行为第4、12行,对应计数为2,和需求完全吻合。

内容的提问来源于stack exchange,提问作者nik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 06:31:27