将非结构化数据转换为结构化格式

时间:2019-09-11 11:58:23

标签: r regex

假设我有以下形式的数据: d1 <- c("Name: priya", " Age :47", "Gender : female")

我想转换成这种形式: d1 <- c("Name", "Priya", "Age", "47", "Gender", "female")

如何使用R做到这一点?

2 个答案:

答案 0 :(得分:1)

您想要的东西还不是很清楚,所以我在这里做一些假设。

假设您的数据是这样的: d1 <- c("Name: Priya", " Age :47"," Gender : female")

,您想要这样的最终结果: d2 <- c("Name", "Priya", "Age", "47", "Gender", "female")

您可以执行以下操作: d2 <- gsub("\\s","", unlist(strsplit(d1, ":")))

strsplit(d1, ":")将d1中每个带引号的元素都用“:”符号分隔,但输出一个列表。取消列表将其转换为字符向量。 gsub部分会找到所有空格"\\s",并将其替换为没有空格""。 希望这会有所帮助。

答案 1 :(得分:0)

您可以使用trimws删除前导或尾随空格,然后使用strsplit分隔:

[: ]+

或@sindri_baldur在评论中建议

unlist(strsplit(trimws(d1), "[: ]+"))
#[1] "Name"   "priya"  "Age"    "47"     "Gender" "female"

仅在trimws(unlist(strsplit(d1, ":"))) 处进行拆分的最大优势是,如果单词中有空格,它将保留它们并仅删除前导或尾随空格。