R separate_wider 忽略引号内的逗号

问题描述 投票:0回答:1

我有必须从 Airtable 导出到 CSV 文件的数据。有些列包含多条信息,以逗号分隔。然而,在某些情况下,单独的信息片段还包含一个逗号,因此信息包含在引号中,如下所示:

df <- data.frame(str=c("A,B,C","D,E",'H,"I,J"'))

我试图用逗号将这些部分分隔成单独的列...但是对于第 3 行,我需要“I,J”在第二个分隔列中保持在一起(理想情况下,我想删除之后的引号分裂)。但是,当我使用以下内容时,这两部分位于不同的列中:

df_splt <- df %>% separate_wider_delim(str, delim = ",", names = c(paste0("str_", seq_len(max(str_count(df$str, ",") + 1)))), too_few="align_start")

产量:

我看到有一个 separate_wider_regex,但我不清楚它是如何工作的,因为我在 str 中有不同数量的逗号。

r tidyverse delimiter
1个回答
0
投票

您可以使用

read.csv()
它只会解析不在引号内的逗号,即

setNames(read.csv(text = df$str, header = FALSE, stringsAsFactors = FALSE), 
         paste0("str_", seq_len(max(str_count(df$str, ",") + 1))))

  str_1 str_2 str_3
1     A     B     C
2     D     E      
3     H   I,J
© www.soinside.com 2019 - 2024. All rights reserved.