![表格:统计列中某个值的出现次数](https://linux22.com/image/314707/%E8%A1%A8%E6%A0%BC%EF%BC%9A%E7%BB%9F%E8%AE%A1%E5%88%97%E4%B8%AD%E6%9F%90%E4%B8%AA%E5%80%BC%E7%9A%84%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0.png)
我有一张用表格制作的大表格,其中每个单元格要么是“是”,要么是“否”。
我想在底部放置一个“总计行”,即:一行计算每列中有多少个“是”并显示总数。类似这样:
Feature A | Y | N | Y |
Feature B | Y | Y | N |
Feature C | Y | N | Y |
Feature D | Y | N | Y |
TOTAL | 4 | 1 | 3 |
可以不用手动计算发生次数吗?表格很大,而且经常更改,每次都手动计算确实很麻烦。
答案1
使用该collcell
包,您可以检查每个条目并使用计数器来跟踪总数,最后输出计数器的值。
笔记:
- 通过一些额外的逻辑,应该能够扩展它以便只有一种列类型,但为了保持简单,我定义了三种单独的列类型。
代码:
\documentclass{article}
\usepackage{collcell}
\usepackage{xstring}
\usepackage{array}
\newcounter{ColumnOne}
\newcounter{ColumnTwo}
\newcounter{ColumnThree}
\newcommand*{\CountColumnOne}[1]{%
\IfStrEq{#1}{Y}{\stepcounter{ColumnOne}}{}#1%
}
\newcommand*{\CountColumnTwo}[1]{%
\IfStrEq{#1}{Y}{\stepcounter{ColumnTwo}}{}#1%
}
\newcommand*{\CountColumnThree}[1]{%
\IfStrEq{#1}{Y}{\stepcounter{ColumnThree}}{}#1%
}
\newcolumntype{X}{>{\collectcell\CountColumnOne}{c}<{\endcollectcell}}
\newcolumntype{Y}{>{\collectcell\CountColumnTwo}{c}<{\endcollectcell}}
\newcolumntype{Z}{>{\collectcell\CountColumnThree}{c}<{\endcollectcell}}
\begin{document}
\begin{tabular}{l X Y Z}
Feature A & Y & N & Y \\
Feature B & Y & Y & N \\
Feature C & Y & N & Y \\
Feature D & Y & N & Y \\
TOTAL & \arabic{ColumnOne} & \arabic{ColumnTwo} & \arabic{ColumnThree} \\
\end{tabular}
\end{document}