在R中对数据进行分组后使用重新缩放功能

问题描述 投票:1回答:1

我有一个数据框,用于测量具有唯一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')"

关于如何设置格式的任何建议?

r group-by syntax dplyr rescale
1个回答
0
投票

假设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)))
© www.soinside.com 2019 - 2024. All rights reserved.