我正在一个长数据库(full_database)上运行一个函数,该数据库有两个主要组,我需要在每个组的多个子集上执行各种线性模型。
然后,我将 R^2、调整后的 R^2 和 p.value 提取到数据框中,其中每一行对应于一次比较。由于有 30 种不同的情况,我有另一个小标题,其中列出了函数参数所在的所有可能性( possibility )。
原始函数的脚本是:
database_correlation <- function(id, group) {
require(dplyr)
require(tidyr)
require(rlang)
id_name <- quo_name(id)
id_var <- enquo(id)
group_name <- quo_name(group)
group_var <- enquo(group)
corr_db <- full_database %>%
filter(numid==!!id_name) %>%
filter(major_group==!!group_name) %>%
droplevels()
correlation <- summary(lm(yvar~xvar, corr_db))
id.x <- as.character(!!id_var) #Gives out an error: "invalid argument type"
group.x <- as.character(!!group_var) #Gives out an error: "invalid argument type"
r_squared <- correlation$r.squared
r_squared_adj <- correlation$adj.r.squared
p_value <- correlation$coefficients[2,4]
data.frame(id.x, group.x, r_squared, r_squared_adj, …Run Code Online (Sandbox Code Playgroud) 我一直在努力解决这个问题。
\n我需要根据检测数据库中另一个“错误”列的特定评论来创建一个更正的列。我可以使用 grepl 解决这个问题,但我也很难让 str_detect 正常工作(对于大数据集来说,它通常更快)。
\n这是一个示例数据库:
\ntest <- tibble(\n id = seq(1:30),\n date = sample(seq(as.Date('2000/01/01'), as.Date('2018/01/01'), by="day"), 30),\n error = c(rep(NA, 3), "wrong date! Correct date = 01.03.2022",\n rep(NA, 5), "wrong date! Correct date = 01.05.2021",\n rep(NA, 5), "wrong date! Correct date = 01.03.2022",\n rep(NA, 7), "wrong date! Correct date = 01.05.2021",\n rep(NA, 2), "date already corrected on 01.05.2021",\n NA, "date already corrected on 01.03.2022", NA))\nRun Code Online (Sandbox Code Playgroud)\n我首先尝试使用 str_detect 创建一个新的“date_corr”列:
\ntest %>%\n mutate(date_corr=if_else(str_detect(error, "date \\\\= …Run Code Online (Sandbox Code Playgroud)