您好,我想根据shipping_id计算产品数量的总和。我有两列的数据框。
shipment_id details
XYQWE13 [{"orderid"=1,"quantity"=>2},{"orderid"=2,"quantity"=>1}]
UYTDW54 [{"orderid"=1,"quantity"=>5},{"orderid"=2,"quantity"=>5}]
SKFEF32 [{"orderid"=1,"quantity"=>2},{"orderid"=2,"quantity"=>1},{"orderid"=3,"quantity"=>5}]
因此,只有在数量部分之后,我才需要获取数字值。我试图用它来提取数量和数量
y <- stringr::str_extract_all(string = raw_data_shipment2$details, pattern = '"quantity"=>[0-99]+')
哪个给了我一大堆
Name Type Value
y list(3) List of length 3
[[1]] character [1] '"quantity"=>2''"quantity"=>1'
[[2]] character [1] '"quantity"=>5''"quantity"=>5'
[[2]] character [1] '"quantity"=>2''"quantity"=>1''"quantity"=>5'
进一步使用
y2 <- stringr::str_extract_all(string = y, pattern = '=>[0-99]+')
y3 <- stringr::str_extract_all(string = y2, pattern = '[0-99]+')
把这个大清单的结果给我
Name Type Value
y3 list(3) List of length 3
[[1]] character [1] '2''1'
[[2]] character [1] '5''5'
[[2]] character [1] '2''1''5'
现在,我想对数字部分求和,并希望可以将其与原始数据框绑定。但是我坚持如何总结。 任何帮助将不胜感激。
答案 0 :(得分:1)
因为您使用的是stringr
,所以我假设您使用的是其他tidyverse
软件包-特别是purrr
。如果您是,则应该可以使用map函数对y1,y2,y3等求和:
z1 <- purrr::map(y1, ~sum(as.numeric(.)))
z2 <- purrr::map(y2, ~sum(as.numeric(.)))
z3 <- purrr::map(y3, ~sum(as.numeric(.)))
然后您可以绑定z1,z2,z3等。