Преобразуйте биномиальные данные в длинный формат Бернулли - PullRequest
0 голосов
/ 24 апреля 2018

Я вернусь к R через год и хочу использовать rpart для дерева классификации.

Мои данные выглядят так:

Category, Shape, Color, Yes, No
A, Square, Blue, 3, 2
B, Triangle, Blue, 2, 4
etc. 

Любые рекомендации, чтобы изменить форму ниже, чтобы я мог использовать rpart? (Я считаю, что rpart нужны данные как таковые)

ID, Shape, Color, Result
A, Square, Blue, Yes
A, Square, Blue, Yes
A, Square, Blue, Yes
A, Square, Blue, No
A, Square, Blue, No
B, Triangle, Green, Yes
etc...

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

melt данные в длинном формате, затем повторите переменную, сколько раз они появляются в столбце значений.

library(data.table)
melt(setDT(dat),1:3)[,rep(variable,value),by=.(Category,Shape,Color)]
            Category     Shape Color  V1
 1:                A    Square  Blue Yes
 2:                A    Square  Blue Yes
 3:                A    Square  Blue Yes
 4:                A    Square  Blue  No
 5:                A    Square  Blue  No
 6:                B  Triangle  Blue Yes
 7:                B  Triangle  Blue Yes
 8:                B  Triangle  Blue  No
 9:                B  Triangle  Blue  No
10:                B  Triangle  Blue  No
11:                B  Triangle  Blue  No

, используя:

library (tidyverse)

dat%>%
  rowwise()%>%
  mutate(var=list(rep(c("Yes","No"),c(Yes,No))))%>%
  select(-Yes,-No)%>%
  unnest()
 Category   Shape    Color var  
  <fct>    <fct>    <fct> <chr>
 1 A        Square   Blue  Yes  
 2 A        Square   Blue  Yes  
 3 A        Square   Blue  Yes  
 4 A        Square   Blue  No   
 5 A        Square   Blue  No   
 6 B        Triangle Blue  Yes  
 7 B        Triangle Blue  Yes  
 8 B        Triangle Blue  No   
 9 B        Triangle Blue  No   
10 B        Triangle Blue  No   
11 B        Triangle Blue  No   
0 голосов
/ 24 апреля 2018

Вы можете использовать melt из reshape2, затем следовать rep

s=melt(df,id.var=c('Category','Shape','Color'))
s[ rep( 1:nrow(s) , s$value ),]
              Category     Shape Color variable value
1                    A    Square  Blue      Yes     3
1.1                  A    Square  Blue      Yes     3
1.2                  A    Square  Blue      Yes     3
2                    B  Triangle  Blue      Yes     2
2.1                  B  Triangle  Blue      Yes     2
3                    A    Square  Blue       No     2
3.1                  A    Square  Blue       No     2
4                    B  Triangle  Blue       No     4
4.1                  B  Triangle  Blue       No     4
4.2                  B  Triangle  Blue       No     4
4.3                  B  Triangle  Blue       No     4
...