小编Jun*_*tar的帖子

仅当不在带引号的字段中或在 2 个引号之间时才匹配字符

考虑以下字符串:

"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 行)分隔的两个引用字段。;在我的情况下,总是跟在引用字段之后。

regex perl

4
推荐指数
1
解决办法
108
查看次数

使用purrr重命名小标题列表中的不同列

我试图重命名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_refdf1min_altmindf2

我设法使用以下代码一次重命名一列: …

r list dataframe dplyr purrr

1
推荐指数
1
解决办法
75
查看次数

Purrr-有条件地突变数据帧列表中的一列

考虑以下数据帧列表:

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)

我想拼接的元素ABB列如果这不是已经是这样了。请注意,并非所有数据框都有一B列。

执行此操作的条件如下:

  1. 数据框必须同时具有AB
  2. 中的第一个字母B必须与的不同A

我正在使用 …

r list dplyr purrr

1
推荐指数
1
解决办法
66
查看次数

将多列从函数的参数传递给 group_by

考虑以下示例:

\n
library(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\n
Run Code Online (Sandbox Code Playgroud)\n

我想为最后两行创建一个函数,它接受一个group参数将多个列传递给group_by.

\n

这是一个mean通过一组列计算值的虚拟函数作为示例:

\n
group_mean <- function(data, col_value, …
Run Code Online (Sandbox Code Playgroud)

r tidyverse

1
推荐指数
1
解决办法
795
查看次数

标签 统计

r ×3

dplyr ×2

list ×2

purrr ×2

dataframe ×1

perl ×1

regex ×1

tidyverse ×1