Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将二项式数据重塑为长贝努利格式_R_Dataframe_Reshape_Rpart - Fatal编程技术网

R 将二项式数据重塑为长贝努利格式

R 将二项式数据重塑为长贝努利格式,r,dataframe,reshape,rpart,R,Dataframe,Reshape,Rpart,一年后我回到R,想用rpart做一个分类树 我的数据如下所示: Category, Shape, Color, Yes, No A, Square, Blue, 3, 2 B, Triangle, Blue, 2, 4 etc. 有什么建议可以改成下面的格式,这样我就可以使用rpart了?(我认为rpart需要这样的数据) 谢谢大家! 您可以从restrape2使用melt,然后使用rep s=melt(df,id.var=c('Category','Shape','Color')) s[

一年后我回到R,想用rpart做一个分类树

我的数据如下所示:

Category, Shape, Color, Yes, No
A, Square, Blue, 3, 2
B, Triangle, Blue, 2, 4
etc. 
有什么建议可以改成下面的格式,这样我就可以使用rpart了?(我认为rpart需要这样的数据)


谢谢大家!

您可以从
restrape2
使用
melt
,然后使用
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

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%>%
行()
变异(var=list(rep(c(“是”、“否”)、c(是、否)))%>%
选择(-Yes,-No)%%>%
unnest()
类别形状颜色变量
一个正方形的蓝色是的
2个正方形的蓝色是的
3一个正方形的蓝色是的
4一个正方形的蓝色不
5一个正方形的蓝色不
6B三角蓝是的
7B三角蓝是的
8B三角蓝号
9B三角蓝号
10B三角蓝号
11 B三角蓝号
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
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