Использование функции масштабирования после группировки данных в R - PullRequest
1 голос
/ 04 мая 2020

У меня есть фрейм данных, который измеряет вертикальное движение нескольких объектов с уникальными идентификаторами. Я хочу изменить масштаб координат X, Y от пикселей до см, используя пакет изменения масштаба. Каждый объект имеет минимальное значение 0 см и максимум 12,5 см, но длины пикселей различаются, потому что некоторые объекты были ближе, а некоторые - дальше. Я хотел сгруппировать свои данные по уникальному идентификатору, а затем изменить масштаб от 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')"

Есть предложения, как отформатировать это?

1 Ответ

0 голосов
/ 04 мая 2020

Предполагая, что 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)))
...