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

如何在DataFrame中按条件统计值的数量?无需列名或索引自动统计各列TRUE与FALSE值数量的实现方法

自动统计DataFrame每列TRUE/FALSE数量的解决方案

嘿,这个需求我太懂了!要自动统计逻辑型DataFrame每列的TRUE和FALSE出现次数,还不用手动指定列名或索引,完全自动化处理,下面给你几个实用的方法:

基础R方法(无需额外包)

这是最直接的方案,用apply函数遍历每列,结合table()统计频次:

# 你的示例数据
df1 <- c(TRUE,TRUE,FALSE,TRUE,TRUE)
df2 <- c(TRUE,FALSE,FALSE,TRUE,TRUE)
df3 <- c(FALSE,TRUE,TRUE,TRUE,TRUE)
df <- data.frame(df1,df2,df3)

# 自动统计每列的TRUE/FALSE数量
result <- as.data.frame(t(apply(df, 2, table)))

# 查看结果
print(result)

运行后会得到你想要的输出:

df1 df2 df3
TRUE   4   3   4
FALSE  1   2   1

代码解释:

  • apply(df, 2, table):MARGIN=2表示按列处理数据,table()会自动统计当前列中TRUE和FALSE的出现次数
  • t():转置结果,因为默认table()输出的结构是「列名作为行,TRUE/FALSE作为列」,转置后就变成我们需要的「TRUE/FALSE作为行,原列名作为列」的格式
  • as.data.frame():把转置后的矩阵转换成数据框,方便后续操作

这个方法完全不需要指定任何列名或索引,不管你的数据框有多少列,都能自动批量处理。

tidyverse风格方法(可选)

如果你习惯用tidyverse工具链,也可以用purrr或dplyr实现:

用purrr包:

library(purrr)

result <- map_df(df, table) %>% 
  t() %>% 
  as.data.frame()

用dplyr包:

library(dplyr)

result <- df %>%
  summarise_all(~table(.)) %>%
  t() %>%
  as.data.frame()

这两种方法的效果和基础R方案完全一致,只是写法更符合tidyverse的风格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:17:33