Создайте сводную таблицу между накопленной информацией двух столбцов - PullRequest
1 голос
/ 07 апреля 2020

Привет, у меня есть такой фрейм данных:

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 и значение в Col3> = 50.

может быть с dplyr?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Простое решение будет:

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
0 голосов
/ 07 апреля 2020

Данные:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...