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

R dataframe如何像Excel一样使用COUNT函数添加统计行列边距

在R的dataframe中实现Excel COUNT函数效果添加行列边距统计

Excel的COUNT函数逻辑为统计包含数字的单元格,自动排除文本、空值/NA,以下提供两种常用实现方案:

前置准备:示例数据

mdata <- data.frame("CATEGORY"=c("A","B","C","D","E","F"),"SALES"=c(1,20,2,2,0,3),"QTY"=c(0,4,0,0,0,2),"RETURN"=c(0,3,1,0,9,1))

方案1:基础R实现(无需额外安装包)

# 1. 提前将分类列转为字符型,避免后续绑定行时报因子类型错误
mdata$CATEGORY <- as.character(mdata$CATEGORY)
# 2. 筛选出所有数值列,对应Excel中要统计的数字区域
num_cols <- sapply(mdata, is.numeric)
# 3. 新增行统计列:统计每行数值列中有效数字的数量
mdata$COUNT <- apply(mdata[, num_cols], 1, function(x) sum(!is.na(x)))
# 4. 计算列统计结果,添加为最后一行
col_count <- c(
  "COUNT", 
  sapply(mdata[, num_cols], function(x) sum(!is.na(x))),
  sum(mdata$COUNT)
)
mdata <- rbind(mdata, col_count)

如果需要统计大于0的数值数量而非所有数字,只需把代码中的!is.na(x)替换为!is.na(x) & x > 0即可。

方案2:tidyverse实现(语法更简洁)

library(dplyr)

# 新增行统计列,同时添加列统计行
mdata <- mdata %>%
  # 行维度统计
  rowwise() %>%
  mutate(COUNT = sum(across(where(is.numeric), ~!is.na(.x)))) %>%
  ungroup() %>%
  # 列维度统计,绑定为最后一行
  bind_rows(
    summarise(
      .,
      across(where(is.numeric), ~sum(!is.na(.x))),
      CATEGORY = "COUNT"
    )
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:45:03