我有一个冲浪蛤长度的数据库,我想创建bin长度。这些蛤蜊长度从20厘米一直到180厘米。我想以3厘米的增量将这些长度合并在一起。例如,1,2或3的长度将具有3的长度,长度4,5和6将是6的长度,并且7,8,9将全部是bin长度9,依此类推。
我想要的箱子类别是3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 102 105 108 111 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156 159 162 165 168 171 174 177 180。
我还需要将FREQ与正在装箱的长度一起添加。例如,如果我的长度为58厘米(FREQ = 2),59厘米(FREQ = 1)和60厘米(FREQ = 5),则最终结果应为60厘米,频率为8.
STA DATE SPP LENG FREQ
5002 06/12/85 403 82 1
5002 06/12/85 403 90 1
5002 06/12/85 403 94 2
5002 06/12/85 403 98 1
5002 06/12/85 403 99 1
5002 06/12/85 403 102 1
5002 06/12/85 403 105 1
5002 06/12/85 403 106 1
5002 06/12/85 403 107 1
5002 06/12/85 403 111 1
5003 06/12/85 403 75 1
5003 06/12/85 403 76 1
5003 06/12/85 403 92 1
5003 06/12/85 403 93 1
5003 06/12/85 403 95 1
5003 06/12/85 403 151 1
5004 06/12/85 403 130 1
5004 06/12/85 403 140 1
5004 06/12/85 403 143 1
5004 06/12/85 403 144 1
5004 06/12/85 406 145 1
5004 06/12/85 403 146 1
5004 06/12/85 406 147 1
5004 06/12/85 403 153 1
我对R来说相当新,所以我不确定如何做到这一点。请帮忙!
答案 0 :(得分:0)
我相信这会回答你的问题 -
dat$bins<-ceiling(dat$LENG/3)*3
ndat<-aggregate(dat[,c('FREQ')],by=list(dat$STA,dat$DATE,dat$SPP,dat$bins),FUN=sum)
答案 1 :(得分:0)
cut()
函数将数字转换为分组因子。
cutoff_lengths <- seq(0, 180, by = 3)
df$BIN <- cut(df$LENG, cutoff_lengths, labels = cutoff_lengths[-1])
table(df$BIN)
cutoff_lengths[-1]
表示标签只是cutoff_lengths
的第一个值。因为每个箱子位于两个切割点之间,所以比切割点少一个箱子。并且您想要向上舍入,因此最低切割点不能用作标签。