Создание новых переменных с помощью purrr (как это сделать?) - PullRequest
0 голосов
/ 02 октября 2018

У меня большой набор данных с кучей столбцов, для которых я хочу запустить одну и ту же функцию на основе префикса или суффикса для создания новой переменной.

То, что я хотел бы сделать, это предоставить список для сопоставления и создать новые переменные.


dataframe <- data_frame(x_1 = c(1,2,3,4,5,6),
                        x_2 = c(1,1,1,2,2,2),
                        y_1 = c(200,400,120,300,100,100),
                        y_2 = c(250,500,150,240,140,400))

newframe <- dataframe %>% mutate(x_ratio = x_1/x_2,
                                 y_ratio = y_1/y_2)

В прошлом я писал кодв строке что-то вроде

code <- "df <- df %>% mutate(#_ratio = #_1/#_2)" %>% str_replace_all("#",c("x","y"))
eval(parse(text=code))) 

Возможно ли это с чем-то вроде: newframe <- dataframe%>% map (c ("x", "y"), mutate (paste0 (.x), "_ отношение) = paste0 (.x," _ 1 / ",. х," _ 2))

1 Ответ

0 голосов
/ 02 октября 2018

Если мы хотим использовать map, то одним из вариантов является split набор данных по именам столбцов и деление на reduce

library(tidyverse)
split.default(dataframe, sub("_\\d+", "", names(dataframe))) %>%
     map_df(., reduce, `/`) %>% 
       rename_all(~ paste0(.x, "_ratio")) %>%
       bind_cols(dataframe, .)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...