我有一个数据框,用于测量具有唯一ID的多个对象的垂直运动。我想通过使用重新缩放包将X,Y坐标从像素重新缩放为cm。每个对象的最小值均为0cm,最大值为12.5cm,但是像素长度都不同,因为某些对象距离更近而另一些距离更远。我想按唯一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)))