计算组内的成对差异,并保持分组因子

时间:2019-07-12 18:44:14

标签: r tidyverse

我想在每个组中选择三个最接近的值。如何修复我的代码?

此数据有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”))。

0 个答案:

没有答案