【问题标题】:Reshape binomial data to long bernoulli format将二项式数据重塑为长伯努利格式
【发布时间】:2018-04-24 15:44:35
【问题描述】:

一年后我回到 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...

谢谢!

【问题讨论】:

    标签: r dataframe reshape rpart


    【解决方案1】:

    您可以使用 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
    

    【讨论】:

      【解决方案2】:

      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
      

      使用:

      图书馆(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   
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-18
        • 2023-03-18
        • 2017-07-19
        • 2021-05-01
        • 2018-07-25
        • 1970-01-01
        • 2021-09-15
        相关资源
        最近更新 更多