我有以下数据框:
df <- as_tibble(c(15:-15))
现在,我想在新列中添加间隔。间隔应该是这样的:
df$Intervall <- cut(df$value, seq(from = -15, to = 15, by = 5), include.lowest=TRUE)
value Intervall
1 15 (10,15]
2 14 (10,15]
3 13 (10,15]
4 12 (10,15]
5 11 (10,15]
6 10 (5,10]
7 9 (5,10]
8 8 (5,10]
9 7 (5,10]
10 6 (5,10]
11 5 (0,5]
12 4 (0,5]
13 3 (0,5]
14 2 (0,5]
15 1 (0,5]
16 0 (-5,0]
17 -1 (-5,0]
18 -2 (-5,0]
19 -3 (-5,0]
20 -4 (-5,0]
21 -5 (-10,-5]
22 -6 (-10,-5]
23 -7 (-10,-5]
24 -8 (-10,-5]
25 -9 (-10,-5]
26 -10 [-15,-10]
27 -11 [-15,-10]
28 -12 [-15,-10]
29 -13 [-15,-10]
30 -14 [-15,-10]
31 -15 [-15,-10]
结果有一个问题,即值中的所有零(0)都进入时间间隔-0:-5,这使其失去了正负值之间的对称性。5是时间间隔0.5,但-5是时间间隔-10:-5。
我希望每个0为intervall 0或0:0,所以我具有对称性,-5为interval 0:-5。
结果应如下所示:
value Intervall
1 15 (10,15]
2 14 (10,15]
3 13 (10,15]
4 12 (10,15]
5 11 (10,15]
6 10 (5,10]
7 9 (5,10]
8 8 (5,10]
9 7 (5,10]
10 6 (5,10]
11 5 (0,5]
12 4 (0,5]
13 3 (0,5]
14 2 (0,5]
15 1 (0,5]
16 0 (0,0]
17 -1 (-5,0]
18 -2 (-5,0]
19 -3 (-5,0]
20 -4 (-5,0]
21 -5 (-5,0]
22 -6 (-10,-5]
23 -7 (-10,-5]
24 -8 (-10,-5]
25 -9 (-10,-5]
26 -10 (-10,-5]
27 -11 [-15,-10]
28 -12 [-15,-10]
29 -13 [-15,-10]
30 -14 [-15,-10]
31 -15 [-15,-10]
jay.sf解决方案适用于此小样本数据帧。对于我的更大的实际数据框来说,这是不切实际的。因此,我真的很想减少和添加例外,而不是手动进行。我不确定,这怎么可能。
Mabe可以在0周围减去并加上0.5。
cut(15:-15, c(seq(-15,0,5) - 0.5, 0.5 + seq(0,15,5)))
# [1] (10.5,15.5] (10.5,15.5] (10.5,15.5] (10.5,15.5] (10.5,15.5]
# [6] (5.5,10.5] (5.5,10.5] (5.5,10.5] (5.5,10.5] (5.5,10.5]
#[11] (0.5,5.5] (0.5,5.5] (0.5,5.5] (0.5,5.5] (0.5,5.5]
#[16] (-0.5,0.5] (-5.5,-0.5] (-5.5,-0.5] (-5.5,-0.5] (-5.5,-0.5]
#[21] (-5.5,-0.5] (-10.5,-5.5] (-10.5,-5.5] (-10.5,-5.5] (-10.5,-5.5]
#[26] (-10.5,-5.5] (-15.5,-10.5] (-15.5,-10.5] (-15.5,-10.5] (-15.5,-10.5]
#[31] (-15.5,-10.5]
#7 Levels: (-15.5,-10.5] (-10.5,-5.5] (-5.5,-0.5] (-0.5,0.5] ... (10.5,15.5]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句