我有iris数据框。我想添加列“log_Sepal.Length”和“log_Sepal.Width”,它们是将日志应用到“Sepal.Length”和“Sepal.Width”的结果。我试过:
iris %>%
mutate_at(.vars = vars(names(.)[str_detect(names(.), "Sepal")] ), .funs = c("identity", "log"))
Run Code Online (Sandbox Code Playgroud)
但我想要的数据框是:
iris$log_Sepal.Length <- log(iris$Sepal.Length)
iris$log_Sepal.Width <- log(iris$Sepal.Width)
iris
Run Code Online (Sandbox Code Playgroud)
这可能吗mutate_at?
您可以使用 :
library(dplyr)
iris %>% mutate_at(vars(contains('Sepal')), list(log = ~log(.)))
Run Code Online (Sandbox Code Playgroud)
但是,mutate_at已弃用,across从dplyr1.0.0开始使用
iris %>% mutate(across(contains('Sepal'), log, .names = 'log_{col}'))
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species log_Sepal.Length log_Sepal.Width
#1 5.1 3.5 1.4 0.2 setosa 1.629241 1.252763
#2 4.9 3.0 1.4 0.2 setosa 1.589235 1.098612
#3 4.7 3.2 1.3 0.2 setosa 1.547563 1.163151
#4 4.6 3.1 1.5 0.2 setosa 1.526056 1.131402
#5 5.0 3.6 1.4 0.2 setosa 1.609438 1.280934
#6 5.4 3.9 1.7 0.4 setosa 1.686399 1.360977
#...
#...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |