Еще раз спасибо за то, что позволили мне стать частью сообщества. Я очень ценю это и многому научился.

Я хотел бы объединить два столбца как средство строк (по группе) и сохранить другие столбцы. transmute_at отлично поработал со средним значением, но отбросил другие столбцы.

Кроме того, я видел, что это что-то вроде устаревшей функции, есть мысли о том, как это сделать с dplyr 1.0?

Это код

prod<-iris 

prod_avg <- iris %>% filter(!is.na(Species) | Species != "")  %>% 
  group_by(Species) %>% 
  transmute_at(
    c("Sepal.Length","Sepal.Width"), ~ mean(.x, na.rm=T))

1
Stat.Enthus 14 Июн 2020 в 18:05

1 ответ

Лучший ответ

Вместо transmute_at используйте mutate_at

library(dplyr)

iris %>% 
  filter(!is.na(Species) | Species != "")  %>% 
  #There are no NA or empty values in Species though
  group_by(Species) %>% 
  mutate_at(vars(c("Sepal.Length","Sepal.Width")), ~ mean(.x, na.rm=TRUE))

В dplyr 1.0.0 используйте across

iris %>% 
  filter(!is.na(Species) | Species != "")  %>% 
  group_by(Species) %>% 
  mutate(across(c(Sepal.Length,Sepal.Width), ~ mean(.x, na.rm=TRUE)))
6
Ronak Shah 14 Июн 2020 в 15:12