根据列值将dataframe拆分为20个组

根据列值将dataframe拆分为20个组,r,dataframe,tidyverse,R,Dataframe,Tidyverse,我对R相当陌生,找不到解决问题的简明方法 我在R中有一个名为df的数据帧,看起来是这样的。它包含一个名为values的列,该列包含按数字顺序排列的0到1的值,以及一个名为flag的二进制列,该列包含0或1 df value flag 0.033 0 0.139 0 0.452 1 0.532 0 0.687 1 0.993 1 我希望将此数据帧拆分为从0到1的X个组。例如,如果我希望使用4分割分组,则数据将从0-0.25、0.25-0.5

我对R相当陌生,找不到解决问题的简明方法

我在R中有一个名为
df
的数据帧,看起来是这样的。它包含一个名为
values
的列,该列包含按数字顺序排列的0到1的值,以及一个名为
flag
的二进制列,该列包含0或1

df
value     flag
0.033     0
0.139     0
0.452     1
0.532     0
0.687     1
0.993     1
我希望将此数据帧拆分为从0到1的X个组。例如,如果我希望使用4分割分组,则数据将从0-0.25、0.25-0.5、0.5-0.75、0.75-1分割。该数据还将包含对应于该点的标志

我希望这个解决方案是可伸缩的,所以如果我想把它分成更多的组,那么我可以。我也仅限于tidyverse软件包


有人能解决这个问题吗?谢谢

您可以使用
cut
将数据分成
n
组,并在
split
中使用它来创建数据帧列表

n <- 4
list_df <- split(df, cut(df$value, breaks = n))

如果
n
是分区数:

L = seq(1,n)/n

GroupedList = lapply(L,function(x){
                 df[(df$value < x) & (df$value > (x-(1/n))),]
               })
L=seq(1,n)/n
GroupedList=lappy(L,函数(x){
df[(df$value(x-(1/n)),]
})

我认为这应该会生成一个数据帧列表,其中每个数据帧都包含您要求的内容。

这并没有将组按0到1进行拆分。我的第一组是-0.0002到0.208。它是按数据本身分割的,不在0到1之间。如果我阅读了您的问题,它会说明
我希望根据“值”列将此数据框分割为X个组。
。是,这将根据
列将数据分成若干组。数据中既不包含0也不包含1。我认为更新后的答案可以满足您的需要。抱歉,我已经解决了问题。很遗憾,这些答案对我的问题不起作用。第一,使用了一个我无法使用的包,该包已在问题中更新。最后一个答案拆分出一个名为
i
的列,我的数据帧不包含该列。另一个答案根本不使用dataframe,我的答案不使用任何包。你是说标记的副本吗?这是不可伸缩的。如果我想要20组,我必须计算并键入所有组。@geds133我认为这是您想要的正确尝试?为什么您仅限于tidyverse软件包?听起来对我来说是个奇怪的限制。我的工作只允许这样。听起来你最好再找一份工作。限制你的员工只使用整洁的包装是你可以强加的最愚蠢的限制之一(但不要责怪你)。你会错过R拥有的丰富生态系统。
L = seq(1,n)/n

GroupedList = lapply(L,function(x){
                 df[(df$value < x) & (df$value > (x-(1/n))),]
               })