R 将一列中的字符串转换为多列

R 将一列中的字符串转换为多列,r,dataframe,dataset,plyr,R,Dataframe,Dataset,Plyr,我的数据集如下所示: "Fruit","Allocation" apple,Anna:1|Bob:2|Chloe:3 banana,Anna:3|Bob:2|Chloe:1 我想将其转换为如下所示: "Fruit","Anna","Bob","Chloe" apple,1,2,3 banana,3,2,1 将数据集转换为R中所需输出的最简单方法是什么?我们可以使用tidyverse实现这一点。通过在|处拆分“分配”列,使用单独的_行从“宽”转换为“长”,然后在sep=:处将“分配”列

我的数据集如下所示:

"Fruit","Allocation"

apple,Anna:1|Bob:2|Chloe:3

banana,Anna:3|Bob:2|Chloe:1
我想将其转换为如下所示:

"Fruit","Anna","Bob","Chloe"

apple,1,2,3

banana,3,2,1
将数据集转换为R中所需输出的最简单方法是什么?

我们可以使用tidyverse实现这一点。通过在|处拆分“分配”列,使用单独的_行从“宽”转换为“长”,然后在sep=:处将“分配”列拆分为两列“名称”、“编号”,并从“长”扩展到“宽”

library(tidyverse)
separate_rows(df1, Allocation, sep="[|]") %>%
        separate(Allocation, into = c("Name", "Number")) %>%
        spread(Name, Number)
#   Fruit Anna Bob Chloe
#1  apple    1   2     3
#2 banana    3   2     1
数据
df1 <- structure(list(Fruit = c("apple", "banana"), Allocation = c("Anna:1|Bob:2|Chloe:3", 
"Anna:3|Bob:2|Chloe:1")), .Names = c("Fruit", "Allocation"),
 class = "data.frame", row.names = c(NA, -2L))