我有密鑰值串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