2017-06-14 48 views
0

我有一個多層列表(已解析文本)的json文件。埋在名單中,有一層包括我需要平均的幾個計算。我有代碼爲每條線單獨執行此操作,但這不是非常有效。使用lapply或循環JSON解析文本來計算平均值

平均值(json_usage $ usage_history [[1]]使用$ [[1]] $電梯)

這將返回在列表中的第一行的提升層的數目的平均值。如前所述,當您有一個包含多行的數據集時,這樣做效率不高。不幸的是,在整個數據集中使用loop或lapply來做這件事,我還沒有取得太大的成功。

這是當我嘗試在for循環會發生什麼:

for(i in json_usage$usage_history[[i]]$used[[1]]$lift){ 
json_usage$mean_lift <- mean(json_usage$usage_history[[i]]$used[[1]]$lift) 
} 
Error in json_usage$affinity_usage_history[[i]] : 
    subscript out of bounds 

這是發生了什麼,爲什麼我嘗試lapply:

mean_lift <- lapply(lift_list, mean(lift_list$used$lift)) 
Error in match.fun(FUN) : 
'mean(lift_list$used$lift)' is not a function, character or symbol 
In addition: Warning message: 
In mean.default(lift_list$used$lift) : 
    argument is not numeric or logical: returning NA 

我是新來的R,所以我知道我可能做錯了,但我還沒有找到任何我想要做的事例。我正在用盡想法,越來越沮喪。請幫忙!

謝謝!

+0

你能分享的最小數據集或數據的來源?看到這裏的幫助https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Phil

+0

@菲爾不幸的是,它包含專有和可識別的客戶信息,包括名單我正在嘗試與之合作。如果我更改了每個名稱和標籤,它可能會將數據集更改爲不可用狀態。 –

回答

0

jsonlite軟件包有一個非常有用的功能,稱爲flatten,您可以將解析JSON數據時通常出現的嵌套列表轉換爲更具用途的數據框。這應該會使您更簡單地進行所需的計算。

文檔是在這裏:https://cran.r-project.org/web/packages/jsonlite/jsonlite.pdf

的答案,一個模糊的類似的問題,我問(雖然我的問題是使用JSON結果中NA數據),在這裏看到:Converting nested list with missing values to data frame in R

+0

謝謝你的建議,但是當json被讀入R時它變平了。之後的所有事情我都陷入了困境。 –