使用 mutate_all 创建新列

Jer*_* K. 6 r dplyr mutate

我有一些看起来像这样的数据:

  Year Revenue Cost Rent
1 2016    3000    4  100
2 2017    4000    5  100
3 2018    5000    6  100

df <- data.frame(stringsAsFactors=FALSE,
        Year = c(2016L, 2017L, 2018L),
     Revenue = c(3000L, 4000L, 5000L),
        Cost = c(4L, 5L, 6L),
        Rent = c(100L, 100L, 100L)
)
Run Code Online (Sandbox Code Playgroud)

我想将所有内容分成以下百分比Rent

library(dplyr)
df <- df %>% mutate_at(vars(Revenue:Rent), funs(. /Rent))
Run Code Online (Sandbox Code Playgroud)

这完美地工作。

  Year Revenue Cost Rent
1 2016      30 0.04    1
2 2017      40 0.05    1
3 2018      50 0.06    1
Run Code Online (Sandbox Code Playgroud)

唯一的事情:我丢失了我原来的专栏。

我该如何做mutate_all, 以便我有新的列,比如说叫做Revenue_percentage_of_rent, Cost_percentage_of_rent

akr*_*run 5

的使用funs将被弃用,取而代之的是listfromdplyr_0.8.0 所以,选项是

library(dplyr)
df %>%
    mutate_at(vars(Revenue:Rent), list(percentage_of_rent = ~  ./Rent))
#  Year Revenue Cost Rent Revenue_percentage_of_rent Cost_percentage_of_rent Rent_percentage_of_rent
#1 2016    3000    4  100                         30                    0.04                       1
#2 2017    4000    5  100                         40                    0.05                       1
#3 2018    5000    6  100                         50                    0.06                       1
Run Code Online (Sandbox Code Playgroud)