在 R 中对数据分组后使用重新缩放函数

Using rescale function after grouping data in R

我有一个数据框,用于测量具有唯一 ID 的多个对象的垂直移动。我想使用 rescale 包将 X、Y 坐标从像素重新缩放为厘米。每个物体的最小值为 0 厘米,最大值为 12.5 厘米,但像素长度都不同,因为有些物体更近,有些更远。我想按唯一 ID 对我的数据进行分组,然后在 0 到 12.5 厘米之间重新缩放。这是我使用的代码:

Data <- Data %>%
  group_by(ID) %>%
  rescale(Data$Y, to = c(0, 12.5), from = range(Data$Y, na.rm = TRUE, finite = TRUE))

我认为我的数据分组有误,因为我不断收到以下错误:

Error in UseMethod("rescale") : 
  no applicable method for 'rescale' applied to an object of class "c('grouped_df', 'tbl_df', 'tbl', 'data.frame')"

关于如何格式化这个有什么建议吗?

假设 rescale 来自 scales,在 group_by 之后,rescale 它在 mutate 内,只需指定不带 Data$。使用 Data$ 将提取整列而不是每个组的值

library(dplyr)
library(scales)
Data %>%
   group_by(ID) %>%
   mutate(Y = rescale(Y, to = c(0, 12.5), 
       from = range(Y, na.rm = TRUE, finite = TRUE)))

使用 mtcars

的可重现示例
data(mtcars)
mtcars %>% 
    group_by(cyl) %>%
    mutate(mpg = rescale(mpg, to = c(0, 12.5), 
          from = range(mpg, na.rm = TRUE, finite = TRUE)))