我刚接触R编程,我正在尝试解析包含嵌套JSON对象的文件并将其转换为R数据帧。
文件格式如下:
{
"collect": [{
"Record_Id": 32738,
"Log_Number": 3,
"Service_Event": "Desktop Support",
"System_Type": "Custom Application",
"SLA": "B",
"SLA_Met": "No",
"Priority": "Medium",
"DateTime_Occured": "2017-01-18 18:57:20",
"DateTime_Reported_Diff": 595578,
"DateTime_Responded_Diff": 563091,
"DateTime_Resolved_Diff": 607595,
"Reported_By": "Finance",
"Assigned_To": "Custom Application Team C",
"Customer_Satisfaction": 5,
"Region": "Europe",
"Resolution_Effort": "Low",
"Escalation_Level": 3,
"Related_Problem_ID": 6897,
"Report_Source": "Chat",
"DateTime_Reported": "2017-01-25 16:23:38",
"DateTime_Responded": "2017-02-01 04:48:29",
"DateTime_Resolved": "2017-02-08 05:35:04",
"Incident_ID": 32738,
"EventProcessedUtcTime": "2017-02-11T09:39:35.4993265Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:40.2000000Z"
},
{
"Record_Id": 32803,
"Log_Number": 2,
"Service_Event": "Password Reset",
"System_Type": "Email",
"SLA": "B",
"SLA_Met": "Yes",
"Priority": "Low",
"DateTime_Occured": "2016-04-28 08:08:18",
"DateTime_Reported_Diff": 382084,
"DateTime_Responded_Diff": 394858,
"DateTime_Resolved_Diff": 429286,
"Reported_By": "Sales",
"Assigned_To": "Email Team B",
"Customer_Satisfaction": 3,
"Region": "Americas",
"Resolution_Effort": "Medium",
"Escalation_Level": 1,
"Related_Problem_ID": 4768,
"Report_Source": "Phone",
"DateTime_Reported": "2016-05-02 18:16:22",
"DateTime_Responded": "2016-05-07 07:57:20",
"DateTime_Resolved": "2016-05-12 07:12:06",
"Incident_ID": 32803,
"EventProcessedUtcTime": "2017-02-11T09:39:35.5149287Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:46.0650000Z"
},
{
"Record_Id": 32804,
"Log_Number": 1,
"Service_Event": "Password Reset",
"System_Type": "Custom Application",
"SLA": "B",
"SLA_Met": "No",
"Priority": "Medium",
"DateTime_Occured": "2016-10-11 08:50:33",
"DateTime_Reported_Diff": 541423,
"DateTime_Responded_Diff": 468816,
"DateTime_Resolved_Diff": 573017,
"Reported_By": "Sales",
"Assigned_To": "Custom Application Team C",
"Customer_Satisfaction": 4,
"Region": "Americas",
"Resolution_Effort": "Low",
"Escalation_Level": 1,
"Related_Problem_ID": 6916,
"Report_Source": "Phone",
"DateTime_Reported": "2016-10-17 15:14:16",
"DateTime_Responded": "2016-10-23 01:27:52",
"DateTime_Resolved": "2016-10-29 16:38:09",
"Incident_ID": 32804,
"EventProcessedUtcTime": "2017-02-11T09:39:35.5149287Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:46.1110000Z"
}, {
"Record_Id": 32809,
"Log_Number": 1,
"Service_Event": "Password Reset",
"System_Type": "Email",
"SLA": "B",
"SLA_Met": "No",
"Priority": "Low",
"DateTime_Occured": "2016-05-23 13:00:28",
"DateTime_Reported_Diff": 454176,
"DateTime_Responded_Diff": 475141,
"DateTime_Resolved_Diff": 453268,
"Reported_By": "Sales",
"Assigned_To": "Email Team B",
"Customer_Satisfaction": 4,
"Region": "Americas",
"Resolution_Effort": "Low",
"Escalation_Level": 1,
"Related_Problem_ID": 5081,
"Report_Source": "Phone",
"DateTime_Reported": "2016-05-28 19:10:04",
"DateTime_Responded": "2016-06-03 07:09:05",
"DateTime_Resolved": "2016-06-08 13:03:33",
"Incident_ID": 32809,
"EventProcessedUtcTime": "2017-02-11T09:39:35.5149287Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:47.0380000Z"
}, {
"Record_Id": 32814,
"Log_Number": 2,
"Service_Event": "Password Reset",
"System_Type": "Network",
"SLA": "B",
"SLA_Met": "Yes",
"Priority": "Low",
"DateTime_Occured": "2016-01-23 08:12:12",
"DateTime_Reported_Diff": 261519,
"DateTime_Responded_Diff": 385940,
"DateTime_Resolved_Diff": 264070,
"Reported_By": "Supply Chain",
"Assigned_To": "Network Team B",
"Customer_Satisfaction": 3,
"Region": "Americas",
"Resolution_Effort": "Medium",
"Escalation_Level": 2,
"Related_Problem_ID": 3334,
"Report_Source": "Phone",
"DateTime_Reported": "2016-01-26 08:50:51",
"DateTime_Responded": "2016-01-30 20:03:11",
"DateTime_Resolved": "2016-02-02 21:24:21",
"Incident_ID": 32814,
"EventProcessedUtcTime": "2017-02-11T09:39:35.5149287Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:47.9450000Z"
}, {
"Record_Id": 32821,
"Log_Number": 3,
"Service_Event": "Desktop Support",
"System_Type": "Server",
"SLA": "B",
"SLA_Met": "No",
"Priority": "Medium",
"DateTime_Occured": "2017-01-18 01:11:32",
"DateTime_Reported_Diff": 584226,
"DateTime_Responded_Diff": 502059,
"DateTime_Resolved_Diff": 583814,
"Reported_By": "Finance",
"Assigned_To": "Server Team D",
"Customer_Satisfaction": 5,
"Region": "Americas",
"Resolution_Effort": "Low",
"Escalation_Level": 3,
"Related_Problem_ID": 7399,
"Report_Source": "Chat",
"DateTime_Reported": "2017-01-24 19:28:38",
"DateTime_Responded": "2017-01-30 14:56:17",
"DateTime_Resolved": "2017-02-06 09:06:31",
"Incident_ID": 32821,
"EventProcessedUtcTime": "2017-02-11T09:39:35.5149287Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:47.9920000Z"
}, {
"Record_Id": 32822,
"Log_Number": 1,
"Service_Event": "Password Reset",
"System_Type": "Email",
"SLA": "B",
"SLA_Met": "Yes",
"Priority": "Medium",
"DateTime_Occured": "2016-10-17 18:14:33",
"DateTime_Reported_Diff": 461604,
"DateTime_Responded_Diff": 418947,
"DateTime_Resolved_Diff": 463982,
"Reported_By": "Sales",
"Assigned_To": "Email Team C",
"Customer_Satisfaction": 4,
"Region": "Americas",
"Resolution_Effort": "Medium",
"Escalation_Level": 1,
"Related_Problem_ID": 5178,
"Report_Source": "Phone",
"DateTime_Reported": "2016-10-23 02:27:57",
"DateTime_Responded": "2016-10-27 22:50:24",
"DateTime_Resolved": "2016-11-02 07:43:26",
"Incident_ID": 32822,
"EventProcessedUtcTime": "2017-02-11T09:39:35.5149287Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:48.0080000Z"
}, {
"Record_Id": 32824,
"Log_Number": 2,
"Service_Event": "Password Reset",
"System_Type": "Network",
"SLA": "B",
"SLA_Met": "Yes",
"Priority": "Low",
"DateTime_Occured": "2016-04-14 13:05:53",
"DateTime_Reported_Diff": 421053,
"DateTime_Responded_Diff": 439267,
"DateTime_Resolved_Diff": 388328,
"Reported_By": "Sales",
"Assigned_To": "Network Team B",
"Customer_Satisfaction": 3,
"Region": "Americas",
"Resolution_Effort": "Low",
"Escalation_Level": 1,
"Related_Problem_ID": 4909,
"Report_Source": "Email",
"DateTime_Reported": "2016-04-19 10:03:26",
"DateTime_Responded": "2016-04-24 12:04:33",
"DateTime_Resolved": "2016-04-28 23:56:41",
"Incident_ID": 32824,
"EventProcessedUtcTime": "2017-02-11T09:39:35.5149287Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:48.2890000Z"
}, {
"Record_Id": 32825,
"Log_Number": 1,
"Service_Event": "Password Reset",
"System_Type": "Custom Application",
"SLA": "B",
"SLA_Met": "Yes",
"Priority": "Medium",
"DateTime_Occured": "2016-12-24 17:15:54",
"DateTime_Reported_Diff": 569741,
"DateTime_Responded_Diff": 464857,
"DateTime_Resolved_Diff": 648378,
"Reported_By": "HR",
"Assigned_To": "Custom Application Team C",
"Customer_Satisfaction": 4,
"Region": "Europe",
"Resolution_Effort": "Low",
"Escalation_Level": 1,
"Related_Problem_ID": 6803,
"Report_Source": "Phone",
"DateTime_Reported": "2016-12-31 07:31:35",
"DateTime_Responded": "2017-01-05 16:39:12",
"DateTime_Resolved": "2017-01-13 04:45:30",
"Incident_ID": 32825,
"EventProcessedUtcTime": "2017-02-11T09:39:35.5149287Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:48.6020000Z"
}, {
"Record_Id": 32838,
"Log_Number": 1,
"Service_Event": "Desktop Support",
"System_Type": "Email",
"SLA": "B",
"SLA_Met": "Yes",
"Priority": "Medium",
"DateTime_Occured": "2016-08-28 14:17:06",
"DateTime_Reported_Diff": 431181,
"DateTime_Responded_Diff": 534914,
"DateTime_Resolved_Diff": 390543,
"Reported_By": "HR",
"Assigned_To": "Email Team C",
"Customer_Satisfaction": 4,
"Region": "Americas",
"Resolution_Effort": "Low",
"Escalation_Level": 1,
"Related_Problem_ID": 5063,
"Report_Source": "Phone",
"DateTime_Reported": "2016-09-02 14:03:27",
"DateTime_Responded": "2016-09-08 18:38:41",
"DateTime_Resolved": "2016-09-13 07:07:44",
"Incident_ID": 32838,
"EventProcessedUtcTime": "2017-02-11T09:39:35.5149287Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2017-02-11T09:38:49.7780000Z"
}]
}
通过将文件保存为CSV和txt文件来尝试导入,导入到R并尝试转换为JSON,如下所示
Event <- read.table("C:/Users/dkhan/desktop/InputEvent.csv", sep = ",")
Event1 <- toJSON(Event)
jfile <- fromJSON(Event1)
recorded <- lapply(jfile$collect, function(x) {unlist(x)})
#could not run this command, as I got the error as '$' cannot be applied to atomic vectors#
record <- do.call("rbind", recorded)
record <- as.data.frame(record)
我无法用下面提到的方法解析带有JSON对象的文件。
fromJSON( file = json_file )
作为fromJSON的agrument我得到的是fromJSON(txt,simplifyDataframa =,Flatten =)
请告诉我如何使用JSON对象解析文件 我在文件中有多个这样的嵌套JSON字符串的文件。 我将不得不通过'for'循环来处理它们。我无法做到这一点。一直试图在这上工作2-3天,但没有成功。
答案 0 :(得分:3)
为什么不这样做:
library(jsonlite)
events <- fromJSON("~/data/input_event.json")
glimpse(events$collect)
## Observations: 10
## Variables: 26
## $ Record_Id <int> 32738, 32803, 32804, 32809, 32814, 32821, 32822, 32824, 32825, 32838
## $ Log_Number <int> 3, 2, 1, 1, 2, 3, 1, 2, 1, 1
## $ Service_Event <chr> "Desktop Support", "Password Reset", "Password Reset", "Password Reset", "P...
## $ System_Type <chr> "Custom Application", "Email", "Custom Application", "Email", "Network", "S...
## $ SLA <chr> "B", "B", "B", "B", "B", "B", "B", "B", "B", "B"
## $ SLA_Met <chr> "No", "Yes", "No", "No", "Yes", "No", "Yes", "Yes", "Yes", "Yes"
## $ Priority <chr> "Medium", "Low", "Medium", "Low", "Low", "Medium", "Medium", "Low", "Medium...
## $ DateTime_Occured <chr> "2017-01-18 18:57:20", "2016-04-28 08:08:18", "2016-10-11 08:50:33", "2016-...
## $ DateTime_Reported_Diff <int> 595578, 382084, 541423, 454176, 261519, 584226, 461604, 421053, 569741, 431181
## $ DateTime_Responded_Diff <int> 563091, 394858, 468816, 475141, 385940, 502059, 418947, 439267, 464857, 534914
## $ DateTime_Resolved_Diff <int> 607595, 429286, 573017, 453268, 264070, 583814, 463982, 388328, 648378, 390543
## $ Reported_By <chr> "Finance", "Sales", "Sales", "Sales", "Supply Chain", "Finance", "Sales", "...
## $ Assigned_To <chr> "Custom Application Team C", "Email Team B", "Custom Application Team C", "...
## $ Customer_Satisfaction <int> 5, 3, 4, 4, 3, 5, 4, 3, 4, 4
## $ Region <chr> "Europe", "Americas", "Americas", "Americas", "Americas", "Americas", "Amer...
## $ Resolution_Effort <chr> "Low", "Medium", "Low", "Low", "Medium", "Low", "Medium", "Low", "Low", "Low"
## $ Escalation_Level <int> 3, 1, 1, 1, 2, 3, 1, 1, 1, 1
## $ Related_Problem_ID <int> 6897, 4768, 6916, 5081, 3334, 7399, 5178, 4909, 6803, 5063
## $ Report_Source <chr> "Chat", "Phone", "Phone", "Phone", "Phone", "Chat", "Phone", "Email", "Phon...
## $ DateTime_Reported <chr> "2017-01-25 16:23:38", "2016-05-02 18:16:22", "2016-10-17 15:14:16", "2016-...
## $ DateTime_Responded <chr> "2017-02-01 04:48:29", "2016-05-07 07:57:20", "2016-10-23 01:27:52", "2016-...
## $ DateTime_Resolved <chr> "2017-02-08 05:35:04", "2016-05-12 07:12:06", "2016-10-29 16:38:09", "2016-...
## $ Incident_ID <int> 32738, 32803, 32804, 32809, 32814, 32821, 32822, 32824, 32825, 32838
## $ EventProcessedUtcTime <chr> "2017-02-11T09:39:35.4993265Z", "2017-02-11T09:39:35.5149287Z", "2017-02-11...
## $ PartitionId <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
## $ EventEnqueuedUtcTime <chr> "2017-02-11T09:38:40.2000000Z", "2017-02-11T09:38:46.0650000Z", "2017-02-11...