重新格式化数据 - 使用 Excel 或 R 按组计数

重新格式化数据 - 使用 Excel 或 R 按组计数

想象一个这样的数据文件,以制表符分隔,导入到 Excel 或 R 中:

London A
London A
London B
Paris A
Paris B
Paris C

我想将其转换为 3 个单独的计数表(3 是因为第二列有 3 个唯一元素 A、B 和 C)。我想创建的 3 个计数表将是:

A 的计数表:

London 2
Paris 1

B 的计数表:

London 1
Paris 1

C 的计数表:

London 0
Paris 1

使用 R 或 Excel 对此有任何简单的解决方案吗(考虑到我有几百个城市,我想计算出有多少个 A、B 和 C?

答案1

也许在 Excel 中实现此目的的方法有很多。下面的方法几乎不需要费什么力气。首先将数据导入 Excel 的 A 列和 B 列。如果您需要三个表格,则在 3 个不同的列中输入城市重复数据删除后的副本。就我而言,我在 D、G 和 J 列中输入城市名称。[Excel 的数据工具中有重复数据删除功能。]

以下是单元格 E2、H2 和 K2 的公式:

E2: =COUNTIFS($A:$A,D2,$B:$B,"A")

H2: =COUNTIFS($A:$A,G2,$B:$B,"B")

K2: =COUNTIFS($A:$A,J2,$B:$B,"C")

抄下你的公式,你就大功告成了。现在,我不知道你在问题中如何准确定义“表格”,但我认为这可以让你入门。

在此处输入图片描述

答案2

这是 R 中非常常见的数据操作问题。您可以使用它table来获取每个元素的计数。这是一个可重现的示例:

data <- data.frame("city" = c("London","London","London", "Paris", "Paris", "Paris"),"element" = c("A","A","B","A","B","C"))
table(data)
#         element
# city     A B C
#   London 2 1 0
#   Paris  1 1 1

# if you want to save individual columns in separate data frames
data.frame("counts" = table(data)[,"A"])->data_a
data_a
#        counts
# London      2
# Paris       1
data.frame("counts" = table(data)[,"B"])->data_b
data.frame("counts" = table(data)[,"C"])->data_c

如果你想要反向即城市计数,那么使用

table(data$element, data$city)
#    London Paris
#  A      2     1
#  B      1     1
#  C      0     1

相关内容