创建两个汇总的累积信息之间的汇总表

时间:2020-04-07 17:09:14

标签: r dplyr

嗨,我有一个数据框,例如:

Col1 Col2 Col3
A 1 60
B 0 100
C 3 120
D 0 5
E 1 10
F 0 120
G 9 200

,我想交叉引用以下可能性:

     Col2   >0   =0
Col3       
>=50         3    2       
 <50         1    1

例如,我问在Col2> 0中有多少行在Col2> = 50中有多少行。

也许和dplyr在一起?

2 个答案:

答案 0 :(得分:0)

数据:

df <- read.table(text= 'Col1 Col2 Col3
A 1 60
                 B 0 100
                 C 3 120
                 D 0 5
                 E 1 10
                 F 0 120
                 G 9 200', header = TRUE, stringsAsFactors = FALSE)

代码:

library('data.table')
setDT(df)
df[Col3 >= 50, Col3_50 := '>=50']
df[Col3 < 50, Col3_50 := '<50']
df[Col2 > 0, Col2_0 := '>0']
df[Col2 == 0, Col2_0 := '=0']
dcast(df, Col3_50 ~ Col2_0, fun.aggregate = length, value.var = "Col2_0")
#    Col3_50 =0 >0
# 1:     <50  1  1
# 2:    >=50  2  3

答案 1 :(得分:0)

一个简单的解决方案是:

tab <- table(df$Col3 < 50, df$Col2 == 0)
tab
#>       
#>        FALSE TRUE
#>  FALSE     3    2
#>  TRUE      1    1

或者,添加名称:

rownames(tab) <- c("Col3 > 50", "Col3 < 50")
colnames(tab) <- c("Col2 > 0",  "Col2 == 0")
tab
#>           
#>            Col2 > 0 Col2 == 0
#>  Col3 > 50        3         2
#>  Col3 < 50        1         1