mutate_if для чисел c столбцов, разделенных на суммы строк - PullRequest
1 голос
/ 05 августа 2020

Я просто ищу элегантный 1 лайнер, который делит каждый столбец numeri c на суммы строк этих столбцов numeri c. Я хотел бы использовать mutate_if, просто не знаю, как должен быть синтаксис

data<-data.frame(date=seq(from=as.Date('2020-01-01'),to=as.Date('2020-01-05'),by="days"),
             a=sample(1:10,5),
             b=sample(1:10,5),
             c=sample(1:10,5))

1 Ответ

1 голос
/ 05 августа 2020

Мы можем использовать base R

i1 <- sapply(data, is.numeric)
data[i1] <- data[i1]/rowSums(data[i1])

Или используя dplyr

library(dplyr)
data %>%
    mutate(tmp = select(., where(is.numeric)) %>%
      rowSums, across(where(is.numeric), ~ ./tmp), tmp = NULL)
...