想象一个这样的数据文件,以制表符分隔,导入到 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