Не самое симпатичное решение, но за ним легко следовать:
1) Разобрать вашу строку во фрейм данных:
df1 <- as.data.frame(sapply(strsplit(x, '='), rbind), stringsAsFactors=FALSE)
Результат:
> as.data.frame(sapply(strsplit(x, '='), rbind), stringsAsFactors=FALSE)
V1 V2 V3 V4 V5 V6
1 A B D E F G
2 5 1 1 1 2 1
2) Дать заголовок:
names(df1) <- df1[1,]
df1 <- df1[-1,]
Результат:
> df1
A B D E F G
2 5 1 1 1 2 1
3) Сделайте то же самое дляВаша другая строка:
df2 <- as.data.frame(sapply(strsplit(y, '='), rbind), stringsAsFactors=FALSE)
names(df2) <- df2[1,]
df2 <- df2[-1,]
4) Объединить те:
df <- merge(df1, df2, all=TRUE, sort=TRUE)
Результат:
> df
A B D E F G C H
1 2 1 1 <NA> <NA> <NA> 3 4
2 5 1 1 1 2 1 <NA> <NA>
Обновление : вышеупомянутое многофункциональное устройство с косметикой на основе комментариев:
> df1 <- as.data.frame(sapply(strsplit(x, '='), rbind), stringsAsFactors=FALSE)
> names(df1) <- df1[1,]
> df1 <- df1[-1,]
>
> df2 <- as.data.frame(sapply(strsplit(y, '='), rbind), stringsAsFactors=FALSE)
> names(df2) <- df2[1,]
> df2 <- df2[-1,]
>
> library(reshape)
> df <- rbind.fill(df1,df2)
> df[is.na(df)] <- 0
> df <- df[, order(names(df))]
> df
A B C D E F G H
1 5 1 0 1 1 2 1 0
2 2 1 3 1 0 0 0 4