आप एक वर्गीकृत किया आपरेशन का उपयोग करना चाहते हैं, तो आप do
जरूरत JasonWang की तरह अपने टिप्पणी में वर्णित है, जैसे अन्य कार्यों के रूप में: तो, क्यों मैं के साथ एक "सबसेट" की चोटी पर एक नई पंक्ति जोड़ना नहीं कर सकते mutate
या summarise
समूह की डेटा फ्रेम (आपके मामले में, 50) या एक पंक्ति के साथ पंक्तियों की समान संख्या के साथ परिणाम की अपेक्षा करता है (उदाहरण के लिए संक्षेप में)।
जैसा कि आप शायद जानते हैं, सामान्य do
धीमा हो सकता है और यदि आप अपना परिणाम किसी अन्य तरीके से प्राप्त नहीं कर सकते हैं तो अंतिम उपाय होना चाहिए। आपका कार्य काफी सरल है क्योंकि इसमें केवल आपके डेटा फ्रेम में अतिरिक्त पंक्तियां शामिल करना शामिल है, जो सरल अनुक्रमण द्वारा किया जा सकता है, उदा। iris[NA, ]
के आउटपुट को देखें।
तुम क्या चाहते एक वेक्टर
indices <- c(NA, 1:50, NA, 51:100, NA, 101:150)
बनाने के लिए अनिवार्य रूप से है (के बाद से पहले समूह 1 से 50 पंक्तियों में है, 51 से 100 में दूसरा एक और 150 के लिए 101 तीसरे एक)।
परिणाम iris[indices, ]
है।
इस वेक्टर के निर्माण का एक और सामान्य तरीका group_indices
का उपयोग करता है।
indices <- seq(nrow(iris)) %>%
split(group_indices(iris, Species)) %>%
map(~c(NA, .x)) %>%
unlist
(map
purrr
जो मुझे लगता है आप भरी हुई है के रूप में आप tidyverse
के साथ इस टैग किया है से आता है)।
'tibble' का आपका संस्करण अपग्रेड, कि त्रुटि संदेश कम से कम [तीन महीने] है (https://github.com/tidyverse/tibble/blame/b32c2b952afdeff93d422512a132ec6d0a2e2fbc/R/add.R#L35-L37)। (नया त्रुटि संदेश कहता है, "समूहित डेटा फ्रेम में पंक्तियां नहीं जोड़ सकते हैं", जो आपके प्रश्न का उत्तर देता है कि यह क्यों काम नहीं कर रहा है।) – r2evans
आप प्रत्येक समूह में पंक्ति जोड़ने के लिए 'do' का उपयोग कर सकते हैं:' iris%>% group_by (प्रजातियां)%>% करते हैं (add_row (।, .before = 0)) '। – JasonWang
धन्यवाद जेसनवांग और आर 2 एवांस। मैंने अपने पैकेज अपडेट किए हैं और डू() चाल का उपयोग कर रहा है। – Dan