基于两列中的值的交叉表

问题描述 投票:0回答:1

我有一个制表问题。我的数据有9600行,这是一个简化的示例,其中删除了几个参数:

Year   Sex    Area
1938    F      2
1938    M      2
1939    M      2
1939    M      5
1955    F      4
1957    F      4
1955    M      4
1943    M      6
1988    F      1
1988    M      2
1987    M      2
1955    M      3
1984    M      4
1984    F      5
1966    M      6
1955    F      8
1984    F      9
1955    M      3
1981    M      6
1938    F      6

我正在寻找一个这样的表来对我的数据进行交叉制表,并且我需要对案例Area〜Year进行计数,而不是参数值的总和。

Year   Area=1  Area=2  Area=3  Area=3  Area=5  Area=6  Area=7  Area=8  Area=9
1938     7       0       1       9       2       8       1      14       4 
1939     4       4      12      66       3      42      87      24      54 
1940     9      33       1       1       6      22       1       5      15 
1941     12      2       8      77      11      23       4      14       6 
...

我知道有几种方法可以做到这一点,它们可能很简单,但是我找不到正确的过程。

r crosstab
1个回答
0
投票

使用dcast功能

library(data.table)
dcast(df, Year~Area)

结果:

   Year 1 2 3 4 5 6 8 9
1  1938 0 2 0 0 0 1 0 0
2  1939 0 1 0 0 1 0 0 0
3  1943 0 0 0 0 0 1 0 0
4  1955 0 0 2 2 0 0 1 0
5  1957 0 0 0 1 0 0 0 0
6  1966 0 0 0 0 0 1 0 0
7  1981 0 0 0 0 0 1 0 0
8  1984 0 0 0 1 1 0 0 1
9  1987 0 1 0 0 0 0 0 0
10 1988 1 1 0 0 0 0 0 0
© www.soinside.com 2019 - 2024. All rights reserved.