在字符串周围插入缺少的引号

时间:2017-01-11 04:22:46

标签: r

我正在处理由数千个字符串组成的混乱数据(例如下面的例子)。

N        Text_Strings
1        c("israel v. bulgaria", "israel v. bulgaria")
2        israel v. bulgaria
3        c("israel v. bulgaria", "israel v. bglgaria")
4        israel v. bulgaria
5        character(0)
...

从上面的示例/ MWE可以看出,只有一个元素的字符串缺少引号,而具有多个连接子字符串的字符串包含转义引号。我的实际数据是11,000行,包含150多个唯一的子串。

我怎样才能(a)删除包含多个子串的字符串中的引号,或者(b)将它们插入缺失的位置?有很多资源可以解释如何在知道目标子字符串时粘贴引号,但我无法找到有关如何有条件地为所有行执行此操作的任何内容。

提前感谢您的帮助!

x <- structure(list(case_num = structure(c(34L, 34L, 34L, 34L, 34L, 34L, 34L, 34L, 34L, 34L),
                                     .Label = c("  1", "  3", "  4", "  5", 
                                                "  6", "  7", "  8", "  9", " 10", " 11", " 12", " 13", " 14", 
                                                " 15", " 16", " 17", " 18", " 19", " 20", " 21", " 22", " 23", 
                                                " 24", " 25", " 26", " 27", " 28", " 29", " 30", " 31", " 32", 
                                                " 33", " 34", " 35", " 36", " 37", " 38", " 39", " 40", " 41", 
                                                " 42", " 43", " 44", " 45", " 46", " 47", " 48", " 49", " 50", 
                                                " 51", " 52", " 53", " 54", " 55", " 56", " 57", " 58", " 59", 
                                                " 60", " 61", " 62", " 63", " 64", " 65", " 66", " 67", " 68", 
                                                " 69", " 70", " 71", " 72", " 73", " 74", " 75", " 76", " 77", 
                                                " 78", " 79", " 80", " 81", " 82", " 83", " 84", " 85", " 86", 
                                                " 87", " 88", " 89", " 90", " 91", " 92", " 93", " 94", " 95", 
                                                " 96", " 97", " 98", " 99", "100", "101", "102", "103", "104", 
                                                "105", "106", "107", "108", "109", "110", "111", "112", "113", 
                                                "114", "115", "116", "117", "118", "119", "120", "121", "122", 
                                                "123", "124", "125", "126", "127", "128", "129", "130", "131", 
                                                "132", "133", "134", "135", "136", "137", "138", "139", "140", 
                                                "141", "142", "143", "144", "145", "146", "147", "148", "149", 
                                                "150", "151", "152", "153", "154", "155", "156", "157", "158", 
                                                "159", "160", "161", "162", "163", "164"),
                                     class = "factor"), 
                type = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L),
                                 .Label = c("court", "claimant"),
                                 class = "factor"),
                listcites = c("c(\"israel v. bulgaria\", \"israel v. bulgaria\")",
                              "israel v. bulgaria",
                              "c(\"israel v. bulgaria\", \"israel v. bglgaria\")",
                              "israel v. bulgaria",
                              "character(0)",
                              "character(0)",
                              "character(0)",
                              "character(0)",
                              "character(0)",
                              "character(0)")),
           .Names = c("case_num", "type", "listcites"),
           row.names = c(485L, 486L, 487L, 488L, 489L, 490L, 491L, 492L, 495L, 496L),
           class = "data.frame")

1 个答案:

答案 0 :(得分:1)

这可以通过正则表达式完成。删除字符串中的引号

x$listcities <- gsub("\"", "", x$listcites)

还要移除前导c(和尾随)

x$listcities <- gsub("^c\\(|\"|\\)$", "", x$listcites)