将 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)
这会将字符串转换为多列。
如果有帮助请告诉我
谢谢!
这里我有一个数据框 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)
这会将字符串转换为多列。
如果有帮助请告诉我
谢谢!