【发布时间】:2015-09-14 15:13:27
【问题描述】:
我有一个数据框 df,其中有一列名为 x1,其值介于 -5 和 +5 之间。我试图为df 的每一行分配一个关于x1 值的区间。函数cut允许我这样做:
cut(df$x1,c(-5,-4,-3,-2,-1,0,1,2,3,4,5))
然后我可以使用by 将df 拆分为10 个data.frames。不幸的是,我想要分配像 -5 到 -3.95、-4.05 到 -2.95、-3.05 到 -1.95 等间隔,这意味着:
- 4.06 将在 3.95-5.05 区间内
- 4.05 将在 3.95-5.05 和 2.95-4.05 区间内
- 4.04 将在 3.95-5.05 和 2.95-4.05 区间内
- 3.94 将在 2.95-4.05 区间内
这意味着在使用by后,我将拥有 10 个数据帧,其中 2 个数据帧中有一些元素。
我的问题的下一部分将涉及 0 附近的值:区间不应包含负值和正值,因此区间将类似于
- -5 到 -3.95
- -4.05 到 -2.95
- ...
- -2.05 到 -0.95
- -1.05 到 0 而不是 -1.05 到 0.05
- 0 到 1.05 而不是 -0.05 到 1.05
- 0.95 至 2.05
- ...
有没有办法在 R 中实现这一点?
编辑:df
df 看起来像这样:
other_var ... x1 ... another_var ...
100 ... 4 ... 18 ...
12.3 ... 3.84 ... -6.2 ...
1.4 ... 4.78 ... 4.78 ...
-2 ... -2.51 ... 7.1 ...
-3.2 ... 0.57 ... -1 ...
dput(df1)
structure(list(x0 = c(0.702166747375488, 0.205532096598193, 0.0704982518296982,
-0.159150628995597, -0.162625494967927, -0.331660025490033, -0.099135847436449,
-0.137985446193678, -0.179304942878067, 0.0554309512268647),
x1 = c(-0.561621170364712, -0.762747775318984, 1.63791710226613,
-0.861210697757564, -1.05393723031543, 0.809872536189693,
2.85973319518198, 0.211750306033687, 1.18360826959114, -0.358159130198865
), x2 = c(-0.304711385106637, 0.365667729645747, -0.406328268107825,
-0.315315872233279, -0.477546612710489, 0.251158976293131,
-1.1263800774781, 0.229002212764429, -0.00413111289214729,
-0.252467704090853)), .Names = c("x0", "x1", "x2"), row.names = c(NA,
10L), class = "data.frame")
【问题讨论】:
-
请提供
df的可重现示例。
标签: r split dataframe intervals