2016-04-28 80 views
0

我與銷售信息的嵌套JSON文件,並將該文件的一部分如何在R中的json文件中替換多個單詞?

"sales": { 
     "sales_val": 22549 
     "units_in_stock": 251 
     "product_id": "0141602" 
    } 

我也有產品代碼和產品名稱的CSV文件,這樣

product_id product_name 
0141602 toys for children 0-2 years 
… etc … 
0141230 wooden furniture 

我不能瞭解如何使用gsub或有效的方法替換每個產品代碼(總共有超過32,000個產品代碼)。換句話說,我無法找到如何複製這些線路的每一個產品代碼

file <- readLines("sales.json") 
replace <- gsub(pattern = "001", replace = "toys", x = file) 
writeLines(replace, con="sales2.json") 

我曾嘗試將JSON轉換爲data.frame,然後用自帶的plyrjoin()功能,但不是一種有效的方法儘管代碼列表是商店的完整列表,但我還是獲得了很多新加盟。

+1

csv文件中的'代碼'在json文件中的'product_id'? – Psidom

+0

謝謝。顯示原始csv – pachamaltese

回答

0

嗯,這是一種猜謎遊戲,沒有一個真正可重現的例子。就像@Psidom一樣,我想知道csv中的code是否與product_id和json文件相同。

但是,這裏有可能是對你有用的一些想法/方法:

獲取jsonlite包。函數fromJSON將輕鬆解析您的JSON並將其轉換爲R列表。然後取決於你如何嵌套,你可以使用unlist(遞歸= FALSE選項)或do.callrbind,這取決於你想要做什麼。

假設代碼和product_id相同,您可以簡單地使用merge。如果你這樣做,給兩列一樣,它會一次工作(你可以使用不同的列名進行合併..但它更容易,如果他們有相同的名稱。

加入32'000在一個單一的索引對我來說這聽起來不是什麼大不了的事情,所以合併(這很慢)應該能夠完成這項工作,如果它需要太長時間,請考慮data.table package。語法不同,但包裹的速度非常快且很好所以如果你遇到性能問題合併數據集,data.table可能是一個不錯的選擇你

+0

的一部分非常感謝。「代碼」是原始CSV文件中的「產品ID」 LES。包含在csv文件中的代碼與json文件中的代碼相同。 – pachamaltese

+0

在這種情況下,合併很容易。如果這太慢查看data.table。但我懷疑你需要。 –

相關問題