表格:统计列中某个值的出现次数

表格:统计列中某个值的出现次数

我有一张用表格制作的大表格,其中每个单元格要么是“是”,要么是“否”。

我想在底部放置一个“总计行”,即:一行计算每列中有多少个“是”并显示总数。类似这样:

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}

相关内容