Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将json类型列转换为R数据帧_R_Json_Dataframe_Text Mining - Fatal编程技术网

将json类型列转换为R数据帧

将json类型列转换为R数据帧,r,json,dataframe,text-mining,R,Json,Dataframe,Text Mining,这里我有一个数据帧df1,我想把它变成一个数据帧df2。有人有什么建议/想法吗 df1 <- data.frame (ID = c("UniqueValue1", "UniqueValue2", "UniqueValue3", "UniqueValue4", "UniqueValue5", "UniqueValue6"

这里我有一个数据帧
df1
,我想把它变成一个数据帧
df2
。有人有什么建议/想法吗

df1 <- data.frame (ID  = c("UniqueValue1", "UniqueValue2", "UniqueValue3",
                          "UniqueValue4", "UniqueValue5", "UniqueValue6"),
                  stringtext = c("Factor1:1.0, Factor2:2.0, Factor3:3.0"))

df1您可以尝试类似的方法,它可能不太优雅,但会得到您想要的结果

column_names <- as.data.frame(unlist(str_split(df1$stringtext,","))) %>%
setNames(c("factor")) %>%
distinct() %>%
mutate(factor = trimws(factor)) %>%
mutate(factor = gsub(":.+$","",factor))

df1 <- df1 %>%
tidyr::separate(stringtext, column_names$factor ,sep=",")

df <- as.data.frame((sapply(df1,function(x) gsub("^F.+:","",trimws(x)))))
列名称%
集合名(c(“因子”))%>%
不同的()%>%
突变(因子=trimws(因子))%>%
突变(因子=gsub(“:.+$”,“,因子))
df1%
tidyr::separate(stringtext,列名称$factor,sep=“,”)

df如果列中有json字符串,那么可以尝试一件事-
map\u dfr
来自
purrr
包,
fromJSON
来自
jsonlite

df <- map_dfr(df$ColumnWithJsonString, fromJSON)

df谢谢!是否有一种方法不必手动指定“Factor1”、“Factor2”和“Factor3”?比如,如果冒号后面有什么,把它变成一列,冒号后面有什么,把它变成它的特定值。如果我们能做到这一点,那就太棒了。非常感谢你的帮助。非常感谢!不用担心,试试上面的方法。
df <- map_dfr(df$ColumnWithJsonString, fromJSON)