如何从R中具有多个条件的一个数据帧创建多个数据帧

问题描述 投票:1回答:1

我想通过fourx1中的多个条件,从以下给定的数据帧中创建x2数据集>

mydata=structure(list(y = c(-3, 24, 4, 5, 3, -3, -3, 24, 5, 4, 8, 7, 
                            9, 2, 4, 8, 7, 3, 8, 12, 9, 10, 12, 11, 2), 
                      x1 = c(0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 
                             0, 1, 0, 1, 1, 0, 0, 1, 1, 1
                            ), 
                      x2 = c(1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 
                             0, 1, 0, 0, 1, 1, 1, 0)), class = "data.frame", 
                 row.names = c(NA,25L))

第一个数据集是mydata00,它是根据以下条件x1=0x2=0构造的,

mydata00=filter(mydata, c(mydata$x1==0 & mydata$x2==0))
> mydata00
   y x1 x2
1 -3  0  0
2 -3  0  0
3  8  0  0
4  3  0  0
5  9  0  0

现在,我只需要uniquey值以及相应的x1x2。最后,我想对y进行排序。所以我的最终数据集必须看起来像

   y  x1 x2

1 -3  0  0
2  3  0  0
3  8  0  0
4  9  0  0

我想完成mydata11mydata10mydata01,其中,]的工作,>

mydata11=filter(mydata, c(mydata$x1==1 & mydata$x2==1))
mydata10=filter(mydata, c(mydata$x1==1 & mydata$x2==0))
mydata01=filter(mydata, c(mydata$x1==0 & mydata$x2==1))

我可以使用任何for循环或内置函数来创建这些数据集吗?任何帮助表示赞赏。

我想通过x1和x2中的多个条件,从以下给定的数据帧中创建四个数据集mydata = structure(list(y = c(-3,24,4,5,5,3,-3,-3, 24,5,4,8,7,...

r dataframe conditional-statements subset multiple-columns
1个回答
2
投票

我们可以基于splitx1的唯一值来x2数据,并在按unique对其进行排序之后,在每个列表中获得y行。

temp <- lapply(split(mydata, list(mydata$x1, mydata$x2)), function(x) 
                     unique(x[order(x$y), ]))
temp

#$`0.0`
#    y x1 x2
#6  -3  0  0
#18  3  0  0
#16  8  0  0
#21  9  0  0

#$`1.0`
#    y x1 x2
#14  2  1  0
#5   3  1  0
#10  4  1  0
#4   5  1  0
#...
© www.soinside.com 2019 - 2024. All rights reserved.