我正在处理由数千个字符串组成的混乱数据(例如下面的例子)。
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")
答案 0 :(得分:1)
这可以通过正则表达式完成。删除字符串中的引号
x$listcities <- gsub("\"", "", x$listcites)
还要移除前导c(
和尾随)
x$listcities <- gsub("^c\\(|\"|\\)$", "", x$listcites)