我想在每个组中选择三个最接近的值。如何修复我的代码?
此数据有11行(完整数据要大得多,但我只想举一个可复制的示例)。共享同一JobID的“总计”列中的值数范围为2到9个值。我按其JobID将值分组,然后计算组内成对的差异,称为pdiff。假设我已经计算了所有成对的差异,我将使用升序对pdiff列进行排序,然后使用head()选择我的前3个值。 dat1行仅列出了成对差异。 dat2行向我发送错误消息
"Error in `[[<-.data.frame`(`*tmp*`, col, value = c(46, 99891, 99577, 99746, :
replacement has 55 rows, data has 11"
dput(dat)
structure(list(JobID = c("11 W 29", "11 W 29", "11 W 50", "11 W 50",
"11 W 50", "23 E 27", "23 E 27", "23 E 27", "11 W 50", "11 W 50",
"11 W 50"), Total = c(145501, 145547, 45610, 45924, 45755, 56425,
56383, 56262, 756185, 750110, 751467)), row.names = c(NA, -11L
), class = c("tbl_df", "tbl", "data.frame"))
dat%>%
group_by(JobID)%>%
summarize(dist(Total))
dat1 <- dat%>%
group_by(JobID)%>%
summarize(dist(Total))
dat2<-dat%>%
group_by(JobID)%>%
mutate(pdiff=dist(Total))
预期结果应为55行3列的数据帧(JobID,总计和新列(例如称为“ pdiff”))。