我有一个数据框架,大约有200,000行,列如下:
字典列2{"1720100":5,"1720101":1,"1720102":2} {"1720100":4,"1720101":2}……
看起来您可能想要从列中提取json,使用jsonlite
包。您可以将数据放入更长的格式,因为json包含两列。然后用更多的旋转得到想要的最终格式。最终的select
只是根据列名中包含的数字重新排序列的值。
library(tidyverse)
library(jsonlite)
df %>%
pivot_longer(cols = -ID) %>%
mutate(json_parsed = map(value, ~fromJSON(sprintf("[%s]", .), flatten = T))) %>%
unnest(json_parsed) %>%
pivot_longer(cols = -c(ID, name, value), names_to = "n", values_to = "v") %>%
pivot_wider(id_cols = ID, values_from = c(n, v), values_fn = list) %>%
unnest(cols = -ID) %>%
select(ID, order(parse_number(names(.)[-1])) + 1)
ID n_dictionary_column_1 v_dictionary_column_1 n_dictionary_column_2 v_dictionary_column_2
<dbl> <chr> <int> <chr> <int>
1 1 1720100 4 1720100 5
2 1 1720101 3 1720101 1
3 1 1720102 NA 1720102 2
4 2 1720100 4 1720100 4
5 2 1720101 NA 1720101 2
6 2 1720102 NA 1720102 NA