作者:o0沢田纲吉0o | 来源:互联网 | 2022-10-17 06:00
1> Ronak Shah..:
使用tidyverse
函数的一种方法是{}
从字符串中删除引号(),用于str_extract_all
获取冒号(:
)之前和之后的数字以及unnest
这些值。
library(dplyr)
dt %>%
mutate(value = gsub("\\{|\\}", "", value),
N = stringr::str_extract_all(value, "\\d+(?=:)"),
value = stringr::str_extract_all(value, "(?<=:)\\d+\\.\\d+")) %>%
tidyr::unnest(N, value)
# id N value
#1 1 1 3.2
#2 1 2 14.2
#3 2 1 14.0
#4 2 2 3.0
#5 3 1 3.4
#6 3 2 3.9
#7 3 3 0.1
#8 4 1 2.1
2> dww..:
我发现,如果我gsub
习惯将项目编号括在引号中,那么可以使用将其解析为json
表达式library(jsonlite)
。
dt[, .(value = {v1 <- unlist(fromJSON(gsub("([0-9]+):", '"\\1":', value)))},
N = names(v1)),by=id]
# id value N
# 1: 1 3.2 1
# 2: 1 14.2 2
# 3: 2 14.0 1
# 4: 2 3.0 2
# 5: 3 3.4 1
# 6: 3 3.9 2
# 7: 3 0.1 3
# 8: 4 2.1 1