gpt4 book ai didi

r - 如何将键/值字符串转换为单独的列?

转载 作者:行者123 更新时间:2023-12-02 09:25:53 24 4
gpt4 key购买 nike

我有一个 data.framekey/value string 列,其中包含有关一组用户的特征及其值的信息。像这样:

data<-data.frame(id=1:3,statid=c("s003e","s093u","s085t"),str=c("a:1,7:2","a:1,c:4","a:3,b:5,c:33"))
data
# id statid str
# 1 1 s003e a:1,7:2
# 2 2 s093u a:1,c:4
# 3 3 s085t a:3,b:5,c:33

我想做的是为每个功能创建一个包含列的 data.frame。像这样:

data_after<-data.frame(id=1:3,statid=c("s003e","s093u","s085t"),
a=c(1,1,3),b=c(0,0,5),c=c(0,4,33),"7"=c(2,0,0))
data_after
# id statid a b c X7
# 1 1 s003e 1 0 0 2
# 2 2 s093u 1 0 4 0
# 3 3 s085t 3 5 33 0

我试图使用 stringr 包中的 str_split,然后将创建的列表的元素转换为 data.frames(稍后使用 for 绑定(bind)它们例如来自 plyrrbind.fill)但无法完成。任何帮助将不胜感激!

最佳答案

您可以使用 dplyrtidyr:

library(dplyr); library(tidyr)
data %>% mutate(str = strsplit(str, ",")) %>% unnest(str) %>%
separate(str, into = c('var', 'val'), sep = ":") %>% spread(var, val, fill = 0)

# id statid 7 a b c
# 1 1 s003e 2 1 0 0
# 2 2 s093u 0 1 0 4
# 3 3 s085t 0 3 5 33

关于r - 如何将键/值字符串转换为单独的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38144082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com