我希望根据样品的数量是比之前的样品多500个还是少一些来标记样品。我已经看到了条件标签的示例,但是找不到适合我需要的示例。
例如,我的数据如下所示:
column a
200
230
510
1200
1800
1700
2400
Run Code Online (Sandbox Code Playgroud)
我希望根据每个样本彼此之间的最大距离(最多500个)进行标记。因此输出为:
column a column b
200 region1
230 region1
510 region1
1200 region2 #new region starts as there is more than 500 difference than 510 (690)
1400 region2
1700 region2
2400 region3 #new region starts as there is 700 difference from 1700
Run Code Online (Sandbox Code Playgroud)
我已经看到了条件标签的示例,但是对于所有这些标签,都有一定数量的标签(例如,仅二进制标签),并且我需要标签号(区域号)随每个新区域而增加。我怎样才能做到这一点?我尝试改编其他示例,但在设置超过500个新标签条件和具有顺序标签方面都做得很少。
您可以使用diff和cumsum
x$b <- paste0("region", c(1, 1+cumsum(diff(x$a) > 500)))
x
# a b
#1 200 region1
#2 230 region1
#3 510 region1
#4 1200 region2
#5 1800 region3
#6 1700 region3
#7 2400 region4
Run Code Online (Sandbox Code Playgroud)
数据
x <- data.frame(a=c(200,230,510,1200,1800,1700,2400))
Run Code Online (Sandbox Code Playgroud)