首页 > 解决方案 > 根据列值将数据框拆分为从 0 到 1 的 X 组

问题描述

我对 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 个组,对values列进行分箱。例如,如果我希望进行 4 拆分分组,则数据将从 0-0.25、0.25-0.5、0.5-0.75、0.75-1 拆分。该数据还将包含该点的相应标志。

答案应仅使用 DATAFRAME 格式作为输入,仅使用此问题中所述的列,并且仅使用来自 TIDYVERSE、CARET 或 DATA.TABLE 的包。

我希望解决方案具有可扩展性,因此如果我希望将其分成更多组,那么我可以。

有人对此有解决方案吗?谢谢

标签: rdataframe

解决方案


我看不出你之前得到的答案是如何不可扩展的,他们使用没有包的原生 R ......如果n是你想要的分区数:

n = 4
L = seq(1,n)/n

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

推荐阅读