首页 > 解决方案 > 如何将 purrr 映射与数据框中的列一起使用?

问题描述

我想将数据框的多列除以同一数据框的一列(以获取百分比)。我想用 purrr 来做,以便能够迭代每一列的操作,我尝试按以下方式进行操作,但失败了。

#create the tibble
competitor_a <- c(125,300,250)
competitor_b <- c(321,452,366)
competitor_c <- c(231,271,139)
data <- tibble(competitor_a,competitor_b,competitor_c)
data <- data %>% 
  mutate(total_sales=sum(competitor_a,competitor_b,competitor_c))

#iteration 

data %>% 
  map(select(competitor_a,competitor_b,competitor_c)/total_sales))

data我的数据框在哪里,competitor_a, competitor_b, competitor_c是包含竞争对手销售额(股息)的列,total_sales是我的分隔符。

标签: rpurrr

解决方案


在这种情况下,我认为最好使用across

library(dplyr)
data <- data %>% mutate(across(competitor_a:competitor_c, `/`, total_sales))

这也可以使用 base R 来完成:

data[1:3] <- data[1:3]/data$total_sales

推荐阅读