r语言 - 使用 purrr 创建新变量(如何做到这一点?



我有一个大型数据集,其中包含一堆列,我想根据前缀或后缀运行相同的函数以创建新变量。

我希望能够做的是提供一个要映射的列表,并创建新变量。


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,"_ratio(=paste0(.x,"_1/",.x,"_2((

如果我们想使用map,那么一种选择是按列名split数据集并除以reduce

library(tidyverse)
split.default(dataframe, sub("_\d+", "", names(dataframe))) %>%
map_df(., reduce, `/`) %>% 
rename_all(~ paste0(.x, "_ratio")) %>%
bind_cols(dataframe, .)

相关内容

最新更新