我想动态地对 Dataframe 中的每个唯一项执行数学函数。
通常要执行数学函数,我们使用mutate
语句并创建一个列,然后通过在mutate语句之后编写mutate语句来手动执行数学函数。
这在几个列上是可行的。但是,如果我有100列,我必须执行2-5个数学函数,例如:一个是在初始数的基础上增加20%,另一个是在每列上将初始数除以2,并保持原始列不变。
在R中,除了为每个特定的项目编写mutate语句之外,这是可能的吗?
我使用的 Dataframe 是:
structure(list(`Row Labels` = c("2023-03-01", "2023-04-01", "2023-05-01",
"2023-06-01", "2023-07-01", "2023-08-01", "2023-09-01", "2023-10-01"
), X6 = c(14, 16, 14, 11, 9, 9, 11, 11), X7 = c(50, 50, 50, 50,
50, 50, 50, 50), X8 = c(75, 75, 75, 75, 75, 75, 75, 75), X9 = c(100,
100, 100, 100, 100, 100, 100, 100), X11 = c(25, 25, 50, 75, 125,
200, 325, 525), X12 = c(50, 50, 100, 150, 250, 400, 650, 1050
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-8L))
对于个别情况,此代码足以:
library(readxl)
library(dplyr)
Book1 <- read_excel("C:/X/X/X- X/X/Book1.xlsx",sheet = "Sheet6")
dput(Book1)
Book1 <- Book1 %>%
mutate(`X6 20%` = X6*1.20) %>%
mutate(`X6 by 2`= X6/2)
我想通过一个循环来运行它,但是选择多个列成为一个问题,因为我们必须在mutate语句中指定列名,我相信这在这里是不可能的。
谁能告诉我这是否可以用一种简单的方法实现?
预期输出如下:
1条答案
按热度按时间nvbavucw1#
我们可以使用
across()
更新:更短:
第一个答案: