如何解决Mutate_at,通过指定列名添加列
我有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"))
但是我想要的数据框是:
iris$log_Sepal.Length <- log(iris$Sepal.Length)
iris$log_Sepal.Width <- log(iris$Sepal.Width)
iris
mutate_at
有可能吗?
解决方法
您可以使用:
library(dplyr)
iris %>% mutate_at(vars(contains('Sepal')),list(log = ~log(.)))
但是,mutate_at
已过时,请使用across
1.0.0中的dplyr
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
#...
#...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。