考虑以下字符串:
"bla ; bla"; bla
"bla "";"" bla"; bla
"bla ";" bla"; bla
Run Code Online (Sandbox Code Playgroud)
我正在尝试匹配任何;不在带引号的字段(例如"bla ; bla")中或在 2 个引号之间的内容。
换句话说,我想匹配;前两个字符串中的第二个和;最后一个字符串中的所有字符串。
这是我一直在尝试的 2 个正则表达式,但我无法制作一个适用于所有情况的正则表达式。
^(['"])(?:(?!\1).)*\1(?=;)(*SKIP)(*F)|;
^(['"])(?:(?!(?!\1)\1).)*\1(?=;)(*SKIP)(*F)|;
Run Code Online (Sandbox Code Playgroud)
任何的想法?
编辑
我在最初的问题中省略了几个重要的细节。上面的示例行来自.csv文件。我正在尝试;从不同文件的行中提取所有文件分隔符。我的问题是区分;引用字段内的引用(第 2 行)和由;(第 3 行)分隔的两个引用字段。;在我的情况下,总是跟在引用字段之后。
我试图重命名tibbles基于正则表达式的列表中的几列。
让我们看下面的例子:
library(tidyverse)
df1 <- tibble(
id_site = 1,
country = rep(paste0("country", 1:2), each = 3, len = 5),
species = rep(paste0("sp.", c(1, 3)), each = 3, len = 5),
min = c(100, 900, 2200, 400, 1300)
)
df2 <- tibble(
id_ref = 2,
country = "country3",
species = rep(paste0("sp.", 2:6), each = 1, len = 4),
min_alt = c(2700, 400, 600, 1800)
)
Run Code Online (Sandbox Code Playgroud)
我想重新命名id_site,以id_ref中df1和min_alt对min中df2。
我设法使用以下代码一次重命名一列: …
考虑以下数据帧列表:
library(tidyverse)
df1 <- tibble(
id = 1:5,
A = LETTERS[1:5],
B = letters[10:14]
)
df2 <- tibble(
id = 1:3,
A = LETTERS[1:3],
B = paste(LETTERS[1:3], letters[10:12])
)
df3 <- tibble(
id = 1:6,
B = paste(LETTERS[1:6], letters[10:15])
)
df4 <- tibble(
id = 1:4,
C = paste(LETTERS[15:18], letters[20:23])
)
df_ls <- list(df1, df2, df3, df4) %>%
set_names(paste0("df", 1:4))
Run Code Online (Sandbox Code Playgroud)
我想拼接的元素A和B入B列如果这不是已经是这样了。请注意,并非所有数据框都有一B列。
执行此操作的条件如下:
A和B列B必须与的不同A我正在使用 …
考虑以下示例:
\nlibrary(tidyverse)\n\ndf <- tibble(\n cat = rep(1:2, times = 4, each = 2),\n loc = rep(c("a", "b"), each = 8),\n value = rnorm(16)\n)\n\ndf %>% \n group_by(cat, loc) %>% \n summarise(mean = mean(value), .groups = "drop")\n\n# # A tibble: 4 x 3\n# cat loc mean\n# * <int> <chr> <dbl>\n# 1 1 a -0.563\n# 2 1 b -0.394\n# 3 2 a 0.159\n# 4 2 b 0.212\nRun Code Online (Sandbox Code Playgroud)\n我想为最后两行创建一个函数,它接受一个group参数将多个列传递给group_by.
这是一个mean通过一组列计算值的虚拟函数作为示例:
group_mean <- function(data, col_value, …Run Code Online (Sandbox Code Playgroud)