我对R中的正则表达不太熟悉。
在一列中我试图在//之前和之后提取单词符号。即这就是我在专栏中的内容:
qtaro_269//qtaro_269||qtaro_353//qtaro_353||qtaro_375//qtaro_375||qtaro_11//qtaro_11
这就是我想要的:
qtaro_269; qtaro_353; qtaro_375; qtaro_11
我发现了这个:Extract character before and after "/"而且:Extract string before "|"。但是我不知道如何根据我的输入进行调整。非常感谢任何提示。
编辑:
a qtaro_269//qtaro_269||qtaro_353//qtaro_353||qtaro_375//qtaro_375||qtaro_11//qtaro_11
b
c qtaro_269//qtaro_269||qtaro_353//qtaro_353||qtaro_375//qtaro_375||qtaro_11//qtaro_11
答案 0 :(得分:2)
以下情况如何?
# Split by "||"
x2 <- unlist(strsplit(x, "\\|\\|"))
[1] "qtaro_269//qtaro_269" "qtaro_353//qtaro_353" "qtaro_375//qtaro_375" "qtaro_11//qtaro_11"
# Remove everything before and including "//"
gsub(".+//", "", x2)
[1] "qtaro_269" "qtaro_353" "qtaro_375" "qtaro_11"
如果你想将它作为一个字符串;
进行分离:
paste(gsub(".+//", "", x2), collapse = "; ")
[1] "qtaro_269; qtaro_353; qtaro_375; qtaro_11"
答案 1 :(得分:0)
这就是我解决它的方式。肯定不是最聪明,最优雅的方式,所以欢迎提出改进建议。
df <-unlist(lapply(strsplit(df[[2]],split="\\|\\|"), FUN = paste, collapse = "; "))
df <-unlist(lapply(strsplit(df[[2]],split="\\/\\/"), FUN = paste, collapse = "; "))
df <- sapply(strsplit(df$V2, "; ", fixed = TRUE), function(x) paste(unique(x), collapse = "; "))