我有一个数据库,我想要为其创建仓位长度的冲浪周期长度。这些文昌鱼的长度从20厘米到180厘米不等。我想把这些长度以3厘米为增量放在一起。例如,长度为1、2或3的条柱长度为3,长度为4、5和6的条柱长度为6,7、8、9都为条柱长度9,依此类推。
我想要的bin类别是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 123 126 129 132 135 138 141 144 150 153 156 159 162 165 168 171 174 177 180。
我还需要添加频率与长度,这是二进制在一起。例如,如果我的长度为58 cm (FREQ = 2)、59 cm (FREQ = 1)和60 cm (FREQ = 5),则最终结果应为60 cm,频率为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的新手,所以我不知道该怎么做。请帮帮我!
发布于 2017-01-26 03:44:05
我相信这回答了你的问题--
dat$bins<-ceiling(dat$LENG/3)*3
ndat<-aggregate(dat[,c('FREQ')],by=list(dat$STA,dat$DATE,dat$SPP,dat$bins),FUN=sum)发布于 2017-01-26 05:42:51
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的第一个值。因为每个面元都在两个切入点之间,所以每个面元比切点少一个面元。你想要四舍五入,所以最低的切割点不会被用作标签。
https://stackoverflow.com/questions/41860087
复制相似问题