如何将detect_time_anomalies的输出结果保存至列表以便提取
问题
我用bupar和daqapo包处理hospital数据集,转成activitylog后运行detect_time_anomalies(),得到了包含异常统计、tibble表格等的输出。现在想把这些所有输出内容保存到一个列表里,方便后续提取信息。
我的代码如下:
library(bupar) library(daqapo) hospital<-hospital hospital %>% rename(start = start_ts, complete = complete_ts) -> hospital hospital %>% convert_timestamps(c("start","complete"), format = dmy_hms) -> hospital hospital %>% activitylog(case_id = "patient_visit_nr", activity_id = "activity", resource_id = "originator", timestamps = c("start", "complete")) -> hospital hospital %>% detect_time_anomalies()
运行后的输出:
*** OUTPUT *** For 5 rows in the activity log (9.43%), an anomaly is detected. The anomalies are spread over the activities as follows: # A tibble: 3 × 3 activity type n <chr> <chr> <int> 1 Registration negative duration 3 2 Clinical exam zero duration 1 3 Trage negative duration 1 Anomalies are found in the following rows: # Log of 10 events consisting of: 3 traces 3 cases 5 instances of 3 activities 5 resources Events occurred from 2017-11-21 11:22:16 until 2017-11-21 19:00:00 # Variables were mapped as follows: Case identifier: patient_visit_nr Activity identifier: activity Resource identifier: originator Timestamps: start, complete # A tibble: 5 × 10 patient_visit_nr activity originator start complete triagecode specialization .order durat…¹ type <dbl> <chr> <chr> <dttm> <dttm> <dbl> <chr> <int> <dbl> <chr> 1 518 Registration Clerk 12 2017-11-21 11:45:16 2017-11-21 11:22:16 4 PED 1 -23 nega… 2 518 Registration Clerk 6 2017-11-21 11:45:16 2017-11-21 11:22:16 4 PED 2 -23 nega… 3 518 Registration Clerk 9 2017-11-21 11:45:16 2017-11-21 11:22:16 4 PED 3 -23 nega… 4 520 Trage Nurse 17 2017-11-21 13:43:16 2017-11-21 13:39:00 5 URG 4 -4.27 nega… 5 528 Clinical exam Doctor 1 2017-11-21 19:00:00 2017-11-21 19:00:00 3 TRAU 5 0 zero… # … with abbreviated variable name ¹duration
解决方案
detect_time_anomalies()函数的返回值本身就是一个包含所有输出信息的列表,你只需要把它赋值给一个变量即可。修改后的代码如下:
library(bupar) library(daqapo) # 处理数据集并转换为activitylog hospital <- hospital %>% rename(start = start_ts, complete = complete_ts) %>% convert_timestamps(c("start","complete"), format = dmy_hms) %>% activitylog(case_id = "patient_visit_nr", activity_id = "activity", resource_id = "originator", timestamps = c("start", "complete")) # 将异常检测结果保存到列表中 time_anomalies <- detect_time_anomalies(hospital)
提取列表中的内容
保存后,你可以通过列表索引或名称提取所需信息:
- 提取异常统计文本:
time_anomalies$info - 提取按活动分类的异常统计表格:
time_anomalies$anomaly_summary - 提取包含异常的事件行:
time_anomalies$anomalies
比如查看异常事件表格:
print(time_anomalies$anomalies)
这样就能直接获取你需要的各类信息,无需额外处理输出内容。
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

