मैं दूसरे प्रश्न से शुरू करूंगा, जो आसान है। dplyr . का उपयोग करना पैकेज, आप उपयोग कर सकते हैं top_n किसी दिए गए कॉलम के लिए n सबसे बड़ी पंक्तियाँ प्राप्त करने के लिए। उदाहरण के लिए:
> top_n(p_ash_r_100a, 3, SMPL_CNT) %>% arrange(desc(SMPL_CNT))
# A tibble: 3 × 5
SMPL_TIME SQL_ID MODULE EVENT SMPL_CNT
<dttm> <chr> <chr> <chr> <int>
1 2017-04-11 09:01:00 NO_SQL GoldenGate CPU 7
2 2017-04-11 09:00:00 dgzp3at57cagd GoldenGate db file sequential read 2
3 2017-04-11 09:01:00 37cspa0acgqxp GoldenGate db file sequential read 2
ध्यान दें कि यदि nवें स्थान के लिए संबंध हैं तो आपको n से अधिक पंक्तियाँ मिलेंगी। इस प्रकार top_n(p_ash_r_100, 10, SMPL_CNT) चौथे के लिए 17-तरफा टाई के कारण पूरे नमूना डेटा सेट को वापस कर देगा।
पहले प्रश्न के लिए, geom_area . के लिए दस्तावेज़ीकरण एक सुराग प्रदान करता है:
इससे पता चलता है कि geom_area उम्मीद है कि x से मैप किया गया कॉलम संख्यात्मक होना चाहिए। p_ash_r_100 . के लिए लिस्टिंग के आधार पर , SMPL_TIME एक चरित्र वेक्टर प्रतीत होता है। lubridate के साथ पैकेज, हम SMPL_TIME में कनवर्ट कर सकते हैं दिनांक-समय पर dmy_hm . के साथ :
p_ash_r_100a <- p_ash_r_100 %>%
mutate_at(vars(SMPL_TIME), dmy_hm)
हालाँकि, यह आपके इच्छित प्लॉट को प्राप्त करने के लिए पर्याप्त नहीं है क्योंकि y . के कई मान हैं x . के प्रत्येक संयोजन के लिए और fill (जो geom_area . के लिए सही सौंदर्यबोध है , नहीं "col ")। प्लॉट करने से पहले हमें डेटा को संक्षेप में प्रस्तुत करना होगा:
p_ash_r_100a %>%
group_by(SMPL_TIME, EVENT) %>%
summarise(total = sum(SMPL_CNT)) %>%
ggplot(aes(SMPL_TIME, total, fill = EVENT)) +
geom_area()
फिर भी साजिश अभी भी सही नहीं है। ऐसा इसलिए है क्योंकि SMPL_TIME . का हर संयोजन और EVENT डेटा सेट में प्रतिनिधित्व नहीं है। हमें स्पष्ट रूप से बताना होगा geom_area वह y उन लापता पंक्तियों के लिए शून्य के बराबर है। एक तरीका आसान fill . का उपयोग करना है tidyr::spread . में तर्क ।
group_by(p_ash_r_100a, SMPL_TIME, EVENT) %>%
summarise(smpl_sum = sum(SMPL_CNT)) %>%
spread(EVENT, smpl_sum, fill = 0) %>%
gather(EVENT, smpl_sum, CPU, `db file sequential read`,
`direct path write`,
`Log archive I/O`) %>%
ggplot(aes(x = SMPL_TIME, y = smpl_sum, fill = EVENT)) +
geom_area()

