我有密钥值串A R数据集,它看起来像下面:R:如何将键/值字符串转换为不同的行?
quest<-data.frame(city=c("Atlanta","New York","Atlanta","Tampa"), key_value=c("rev=63;qty=1;zip=45987","rev=10.60|34;qty=1|2;zip=12686|12694","rev=12;qty=1;zip=74268","rev=3|24|8;qty=1|6|3;zip=33684|36842|30254"))
其转换为:
city key_value
1 Atlanta rev=63;qty=1;zip=45987
2 New York rev=10.60|34;qty=1|2;zip=12686|12694
3 Atlanta rev=12;qty=1;zip=74268
4 Tampa rev=3|24|8;qty=1|6|3;zip=33684|36842|30254
基于上述数据帧如何可以创建新的数据帧,它看起来像如下:
city rev qty zip
1 Atlanta 63.0 1 45987
2 New York 10.6 1 12686
3 New York 34.0 2 12686
4 Atlanta 12.0 1 74268
5 Tampa 3.0 1 33684
6 Tampa 24.0 6 33684
7 Tampa 8.0 3 33684
“|”是共同的分隔符,它将确定要创建的行数。
代码是否需要改变很多,如果输入的是一样的东西: 追求<-data.frame(市= C(“亚特兰大”,“纽约”,“亚特兰大”,“坦帕”) ,key_value = c(“type = a; qty = 1; zip = 45987”,“type = b; qty = 1 | 2; zip = 12686 | 12694”,“type = c; qty = 1; zip = 74268” ,“type = d; qty = 1 | 6 | 3; zip = 33684 | 36842 | 30254”)) 如何让“type”的单个值在内循环? –
您是否尝试过反转解决方案?它可能只是工作。当'cbind'将部件组合在一起时,这个版本的长度取决于每个部件的长度。这是你必须努力的方向。 – Aaron