将字符串转换为数据框,包括列名

时间:2016-11-09 05:49:28

标签: r string dataframe

我有一个字符串,其结构和长度可以保持变化,即

输入:

X <- ("A=12&B=15&C=15")
Y <- ("A=12&B=15&C=15&D=32&E=53")

我正在寻找转换为数据框的字符串

预期输出:

Dataframe X

 A  B  C
 12 15 15

和Dataframe Y

 A  B  C  D  E
 12 15 15 32 53

我厌倦了这一点:

X <- as.data.frame(strsplit(X, split="&"))

但是这对我来说不起作用,因为它只创建了一个列和列名称混乱了。

P.S:我不能对列名进行硬编码,因为它们可以变化,并且在任何给定时间,字符串只包含一行

2 个答案:

答案 0 :(得分:5)

一种选择是从字符串中提取数字部分,并使用read.table读取它。模式[^0-9]+表示一个或多个不是数字的字符,并将其替换为第一个gsub中的空格,使用read.table读取该字符,并在{{中指定列名称1}}通过删除非大写字母的所有字符(第二个col.names)得到的值的参数

gsub

答案 1 :(得分:3)

你也可以试试这个:

library(stringr)
res <- str_match_all(X, "([A-Z]+)=([0-9]+)")[[1]]
df <- as.data.frame(matrix(as.integer(res[,3]), nrow=1))
names(df) <- res[,2]

df
   A  B  C
1 12 15 15