Я пытался изучить R, и у меня есть файл JSON, полный однострочных объектов JSON, и у каждого объекта есть массив данных учетной записи.Я пытаюсь проанализировать каждую строку, затем извлечь массив JSON из проанализированного объекта JSON, получить тип учетной записи и сумму.Но моя проблема в том, что я не знаю, как лучше всего извлечь эти два атрибута.
Я пытался использовать пакет dplyr для извлечения "accountHistory" из каждой из моих строк JSON, но я получаюошибка консоли.Когда я пытаюсь:
select(JsonAcctData, "accountHistory.type", "accountHistory.amount")
Что происходит, мой код возвращает только последнюю учетную запись для типа и суммы каждой строки.
Сейчас мой код записывает в файл CSV, и я могуувидеть все данные, которые мне нужны, но я просто хочу удалить ext
library("rjson")
library("dplyr")
parseJsonData <- function (sourceFile, outputFile)
{
#Get all total lines in the source file provided
totalLines <- readLines(sourceFile)
#Clean up old output file
if(file.exists(outputFile)){
file.remove(outputFile)
}
#Loop over each line in the sourceFile,
#parse the JSON and append to DataFrame
JsonAcctData <- NULL
for(i in 1:length(totalLines)){
jsonValue <- fromJSON(totalLines[[i]])
frame <- data.frame(jsonValue)
JsonAcctData <- rbind(JsonAcctData, frame)
}
#Try to get filtered data
filteredColumns <-
select(JsonAcctData, "accountHistory.type", "accountHistory.amount")
print(filteredColumns)
#Write the DataFrame to the output file in CSV format
write.csv(JsonAcctData, file = outputFile)
}
Проверка данных файла JSON:
{"name":"Test1", "accountHistory":[{"amount":"107.62","date":"2012-02-
02T06:00:00.000Z","business":"CompanyA","name":"Home Loan Account
6220","type":"payment","account":"11111111"},
{"amount":"650.88","date":"2012-02-
02T06:00:00.000Z","business":"CompanyF","name":"Checking Account
9001","type":"payment","account":"123123123"},
{"amount":"878.63","date":"2012-02-
02T06:00:00.000Z","business":"CompanyG","name":"Money Market Account
8743","type":"deposit","account":"123123123"}]}
{"name":"Test2", "accountHistory":[{"amount":"199.29","date":"2012-02-
02T06:00:00.000Z","business":"CompanyB","name":"Savings Account
3580","type":"invoice","account":"12312312"},
{"amount":"841.48","date":"2012-02-
02T06:00:00.000Z","business":"Company","name":"Home Loan Account
5988","type":"payment","account":"123123123"},
{"amount":"116.55","date":"2012-02-
02T06:00:00.000Z","business":"Company","name":"Auto Loan Account
1794","type":"withdrawal","account":"12312313"}]}
то, что я ожидал,чтобы получить CSV, который имеет только типы учетных записей и суммы, удерживаемые в каждой учетной записи.