将 json 类型的列转换为 R 数据框

turning json type column into R dataframe

这里我有一个数据框 df1,我想将其转换为数据框 df2。有人有 suggestions/ideas 吗?

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

进入...

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

有没有一种方法可以让您不必手动指定 'Factor1'、'Factor2' 和 'Factor3'?就像冒号后面的东西一样,把它变成一列,冒号后面的东西,把它变成它的特定值。如果我们能得到它,那就太棒了。对此的任何帮助或反馈将不胜感激!谢谢!

你可以这样试试,虽然不是很优雅,但可以得到你想要的结果。

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)))))

如果您在一列中有 json 个字符串,那么您可以尝试一件事 -
map_dfr 来自 purrr 包,fromJSON 来自 jsonlite.

df <- map_dfr(df$ColumnWithJsonString, fromJSON)

这会将字符串转换为多列。

如果有帮助请告诉我
谢谢!