R Language
dplyr
खोज…
टिप्पणियों
dplyr plyr का एक पुनरावृत्ति है जो R में डेटा को हेरफेर करने के लिए एक लचीला "क्रिया" आधारित कार्य प्रदान करता है। dplyr का नवीनतम संस्करण CRAN का उपयोग करके डाउनलोड किया जा सकता है
install.package("dplyr")
Dplyr में मुख्य वस्तु एक tbl है, एक सारणीबद्ध डेटा संरचना का प्रतिनिधित्व करता है। वर्तमान में dplyr (संस्करण 0.5.0) समर्थन करता है:
- डेटा फ़्रेम
- डेटा टेबल
- SQLite
- PostgreSQL / Redshift
- MySQL / MariaDB
- BigQuery
- MonetDB
- सरणियों के साथ डेटा क्यूब्स (आंशिक कार्यान्वयन)
dplyr की एकल तालिका क्रियाएं
dplyr R
में डेटा हेरफेर का एक व्याकरण का परिचय। यह डेटा के साथ काम करने के लिए एक सुसंगत इंटरफ़ेस प्रदान करता है, जहां यह संग्रहीत है: data.frame , data.table , या database
। dplyr
प्रमुख टुकड़े dplyr
का उपयोग करके लिखे गए हैं , जो इन-मेमोरी डेटा के साथ काम करने के लिए बहुत तेज़ बनाता है।
dplyr
के दर्शन में छोटे कार्य होते हैं जो एक काम को अच्छी तरह से करते हैं। पांच सरल कार्यों ( filter
, arrange
, select
, mutate
और summarise
) का उपयोग डेटा का वर्णन करने के नए तरीकों को प्रकट करने के लिए किया जा सकता है। जब group_by
के साथ संयुक्त, इन कार्यों का उपयोग समूह वार सारांश आँकड़ों की गणना के लिए किया जा सकता है।
सिंटेक्स सामान्यताओं
इन सभी कार्यों में एक समान वाक्यविन्यास है:
- इन सभी कार्यों के लिए पहला तर्क हमेशा एक डेटा फ्रेम होता है
- स्तंभों को सीधे नंगे चर नामों का उपयोग करके संदर्भित किया जा सकता है (अर्थात,
$
का उपयोग किए बिना) - ये फ़ंक्शन मूल डेटा को स्वयं संशोधित नहीं करते हैं, अर्थात, इनके दुष्प्रभाव नहीं हैं। इसलिए, परिणाम हमेशा एक वस्तु को बचाया जाना चाहिए।
हम dplyr
की एकल तालिका क्रियाओं का पता लगाने के लिए अंतर्निहित mtcars डेटासेट का उपयोग करेंगे। के प्रकार परिवर्तित करने से पहले mtcars
को tbl_df
(क्योंकि यह मुद्रण स्वच्छ बनाता है), हम जोड़ने rownames
एक स्तंभ का उपयोग के रूप में डेटासेट के rownames_to_column
से समारोह Tibble पैकेज।
library(dplyr) # This documentation was written using version 0.5.0
mtcars_tbl <- as_data_frame(tibble::rownames_to_column(mtcars, "cars"))
# examine the structure of data
head(mtcars_tbl)
# A tibble: 6 x 12
# cars mpg cyl disp hp drat wt qsec vs am gear carb
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#2 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#3 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#4 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#5 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#6 Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
फिल्टर
filter
पंक्तियों को कम करने में मदद करता है जो कुछ मानदंडों से मेल खाती हैं। पहला तर्क data.frame
का नाम है और दूसरा (और बाद में) तर्क डेटा को फ़िल्टर करने वाले मानदंड हैं (ये मानदंड TRUE
या FALSE
मूल्यांकन करना चाहिए)
है कि 4 सिलेंडरों सभी कारों उपसमुच्चय - cyl
:
filter(mtcars_tbl, cyl == 4)
# A tibble: 11 x 12
# cars mpg cyl disp hp drat wt qsec vs am gear carb
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
#2 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
#3 Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
#4 Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
#5 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
# ... with 6 more rows
हम अल्पविराम द्वारा अलग-अलग कई मानदंड पारित कर सकते हैं। कारों जो या तो 4 या 6 सिलेंडरों है सबसेट तक - cyl
और 5 गियर है - gear
:
filter(mtcars_tbl, cyl == 4 | cyl == 6, gear == 5)
# A tibble: 3 x 12
# cars mpg cyl disp hp drat wt qsec vs am gear carb
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.7 0 1 5 2
#2 Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
#3 Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.5 0 1 5 6
filter
मापदंड के आधार पर पंक्तियों का चयन करता है, स्थिति द्वारा पंक्तियों का चयन करने के लिए, slice
उपयोग करें। slice
में केवल 2 तर्क होते हैं: पहला एक data.frame
और दूसरा पूर्णांक पंक्ति मान है।
9 से 6 पंक्तियों का चयन करने के लिए:
slice(mtcars_tbl, 6:9)
# A tibble: 4 x 12
# cars mpg cyl disp hp drat wt qsec vs am gear carb
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Valiant 18.1 6 225.0 105 2.76 3.46 20.22 1 0 3 1
#2 Duster 360 14.3 8 360.0 245 3.21 3.57 15.84 0 0 3 4
#3 Merc 240D 24.4 4 146.7 62 3.69 3.19 20.00 1 0 4 2
#4 Merc 230 22.8 4 140.8 95 3.92 3.15 22.90 1 0 4 2
या:
slice(mtcars_tbl, -c(1:5, 10:n()))
यह slice(mtcars_tbl, 6:9)
के समान आउटपुट में होता है
n()
वर्तमान समूह में टिप्पणियों की संख्या का प्रतिनिधित्व करता है
व्यवस्था
arrange
का उपयोग निर्दिष्ट चर (ओं) द्वारा डेटा को सॉर्ट arrange
लिए किया जाता है। पिछली क्रिया (और dplyr
में अन्य सभी कार्यों) की तरह, पहला तर्क एक data.frame
, और परिणामी तर्क डेटा को सॉर्ट करने के लिए उपयोग किया जाता है। यदि एक से अधिक चर पारित किया जाता है, तो डेटा को पहले चर से छाँटा जाता है, और फिर दूसरे चर से, और इसी तरह ।।
अश्वशक्ति द्वारा डेटा ऑर्डर करने के लिए - hp
arrange(mtcars_tbl, hp)
# A tibble: 32 x 12
# cars mpg cyl disp hp drat wt qsec vs am gear carb
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
#2 Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
#3 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
#4 Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
#5 Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
#6 Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
# ... with 26 more rows
करने के लिए arrange
- प्रति गैलन मील से डेटा mpg
अवरोही क्रम में, सिलेंडर की संख्या से पीछा किया - cyl
:
arrange(mtcars_tbl, desc(mpg), cyl)
# A tibble: 32 x 12
# cars mpg cyl disp hp drat wt qsec vs am gear carb
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
#2 Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
#3 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
#4 Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
#5 Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
#6 Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
# ... with 26 more rows
चुनते हैं
select
का उपयोग केवल चर का एक सबसेट का चयन करने के लिए किया जाता है। केवल mpg
, disp
, wt
, qsec
और vs
mtcars_tbl
से mtcars_tbl
:
select(mtcars_tbl, mpg, disp, wt, qsec, vs)
# A tibble: 32 x 5
# mpg disp wt qsec vs
# <dbl> <dbl> <dbl> <dbl> <dbl>
#1 21.0 160.0 2.620 16.46 0
#2 21.0 160.0 2.875 17.02 0
#3 22.8 108.0 2.320 18.61 1
#4 21.4 258.0 3.215 19.44 1
#5 18.7 360.0 3.440 17.02 0
#6 18.1 225.0 3.460 20.22 1
# ... with 26 more rows
:
निरंतर कॉलम चुनने के लिए नोटेशन का उपयोग किया जा सकता है। से स्तंभों का चयन करने के लिए cars
के माध्यम से disp
और vs
के माध्यम से carb
:
select(mtcars_tbl, cars:disp, vs:carb)
# A tibble: 32 x 8
# cars mpg cyl disp vs am gear carb
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Mazda RX4 21.0 6 160.0 0 1 4 4
#2 Mazda RX4 Wag 21.0 6 160.0 0 1 4 4
#3 Datsun 710 22.8 4 108.0 1 1 4 1
#4 Hornet 4 Drive 21.4 6 258.0 1 0 3 1
#5 Hornet Sportabout 18.7 8 360.0 0 0 3 2
#6 Valiant 18.1 6 225.0 1 0 3 1
# ... with 26 more rows
या select(mtcars_tbl, -(hp:qsec))
ऐसे डेटासेट के लिए जिनमें कई कॉलम होते हैं, नाम से कई कॉलम का चयन करना थकाऊ हो सकता है। जीवन को आसान बनाने के लिए, कई सहायक कार्य होते हैं (जैसे starts_with()
, ends_with()
, contains()
, matches()
, num_range()
, one_of()
, और everything()
) जो select
में उपयोग किए जा सकते हैं । उनका उपयोग करने के तरीके के बारे में अधिक जानने के लिए, देखें ?select_helpers
और ?select
।
नोट : select()
कॉलम में सीधे कॉलम का उल्लेख करते हुए select()
, हम नंगे कॉलम नामों का उपयोग करते हैं, लेकिन हेलिकेन फ़ंक्शन में कॉलम का उल्लेख करते हुए उद्धरणों का उपयोग किया जाना चाहिए।
चयन करते समय स्तंभों का नाम बदलने के लिए:
select(mtcars_tbl, cylinders = cyl, displacement = disp)
# A tibble: 32 x 2
# cylinders displacement
# <dbl> <dbl>
#1 6 160.0
#2 6 160.0
#3 4 108.0
#4 6 258.0
#5 8 360.0
#6 6 225.0
# ... with 26 more rows
जैसा कि अपेक्षित था, यह अन्य सभी चर को गिरा देता है।
अन्य चर छोड़ने के बिना स्तंभों का rename
लिए, rename
उपयोग करें:
rename(mtcars_tbl, cylinders = cyl, displacement = disp)
# A tibble: 32 x 12
# cars mpg cylinders displacement hp drat wt qsec vs
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0
#2 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0
#3 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1
#4 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1
#5 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0
#6 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1
# ... with 26 more rows, and 3 more variables: am <dbl>, gear <dbl>, carb <dbl>
मे बदलें
mutate
का उपयोग डेटा में नए कॉलम जोड़ने के लिए किया जा सकता है। dplyr
में अन्य सभी कार्यों की dplyr
, dplyr
मूल डेटा में नए बनाए गए कॉलम को नहीं जोड़ता है। कॉलम data.frame
के अंत में जोड़े जाते हैं।
mutate(mtcars_tbl, weight_ton = wt/2, weight_pounds = weight_ton * 2000)
# A tibble: 32 x 14
# cars mpg cyl disp hp drat wt qsec vs am gear carb weight_ton weight_pounds
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 1.3100 2620
#2 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 1.4375 2875
#3 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 1.1600 2320
#4 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 1.6075 3215
#5 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 1.7200 3440
#6 Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 1.7300 3460
# ... with 26 more rows
नोट के उपयोग weight_ton
जबकि बनाने weight_pounds
। बेस R
विपरीत, mutate
हमें उन कॉलमों को संदर्भित करने की अनुमति देता है जिन्हें हमने बस एक बाद के ऑपरेशन के लिए उपयोग करने के लिए बनाया था।
केवल नए बने कॉलम, उपयोग बनाए रखने के लिए transmute
करने के बजाय mutate
:
transmute(mtcars_tbl, weight_ton = wt/2, weight_pounds = weight_ton * 2000)
# A tibble: 32 x 2
# weight_ton weight_pounds
# <dbl> <dbl>
#1 1.3100 2620
#2 1.4375 2875
#3 1.1600 2320
#4 1.6075 3215
#5 1.7200 3440
#6 1.7300 3460
# ... with 26 more rows
संक्षेप
summarise
कई मानों को एक मान में लाकर चरों के सारांश आँकड़ों की गणना करता है। यह कई आँकड़ों की गणना कर सकता है और हम एक ही कथन में इन सारांश कॉलमों को नाम दे सकते हैं।
के माध्य और मानक विचलन की गणना करने के mpg
और disp
डाटासेट में सभी कारों की:
summarise(mtcars_tbl, mean_mpg = mean(mpg), sd_mpg = sd(mpg),
mean_disp = mean(disp), sd_disp = sd(disp))
# A tibble: 1 x 4
# mean_mpg sd_mpg mean_disp sd_disp
# <dbl> <dbl> <dbl> <dbl>
#1 20.09062 6.026948 230.7219 123.9387
समूह द्वारा
group_by
का उपयोग डेटा पर समूह वार संचालन करने के लिए किया जा सकता है। जब ऊपर परिभाषित क्रियाओं को इस समूहीकृत डेटा पर लागू किया जाता है, तो वे स्वचालित रूप से प्रत्येक समूह के लिए अलग से लागू होते हैं।
जानने के लिए mean
और sd
के mpg
द्वारा cyl
:
by_cyl <- group_by(mtcars_tbl, cyl)
summarise(by_cyl, mean_mpg = mean(mpg), sd_mpg = sd(mpg))
# A tibble: 3 x 3
# cyl mean_mpg sd_mpg
# <dbl> <dbl> <dbl>
#1 4 26.66364 4.509828
#2 6 19.74286 1.453567
#3 8 15.10000 2.560048
यह सब टॉगल करना
हम hp
और gear
माध्यम से cars
से स्तंभों का चयन करते हैं, cyl
द्वारा पंक्तियों को क्रमबद्ध करते हैं और उच्चतम से लेकर सबसे कम mpg
, gear
द्वारा डेटा को समूहित करते हैं, और अंत में केवल उन कारों को mpg
> 20 और hp
> 75 से कम करते हैं।
selected <- select(mtcars_tbl, cars:hp, gear)
ordered <- arrange(selected, cyl, desc(mpg))
by_cyl <- group_by(ordered, gear)
filter(by_cyl, mpg > 20, hp > 75)
Source: local data frame [9 x 6]
Groups: gear [3]
# cars mpg cyl disp hp gear
# <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 Lotus Europa 30.4 4 95.1 113 5
#2 Porsche 914-2 26.0 4 120.3 91 5
#3 Datsun 710 22.8 4 108.0 93 4
#4 Merc 230 22.8 4 140.8 95 4
#5 Toyota Corona 21.5 4 120.1 97 3
# ... with 4 more rows
हो सकता है कि हम इंटरमीडिएट परिणामों में रुचि नहीं रखते हैं, हम फ़ंक्शन कॉल को लपेटकर उपरोक्त परिणाम प्राप्त कर सकते हैं:
filter(
group_by(
arrange(
select(
mtcars_tbl, cars:hp
), cyl, desc(mpg)
), cyl
),mpg > 20, hp > 75
)
इसे पढ़ना थोड़ा मुश्किल हो सकता है। तो, dplyr
संचालन पाइप %>%
ऑपरेटर का उपयोग करके जंजीर किया जा सकता है। उपरोक्त कोड:
mtcars_tbl %>%
select(cars:hp) %>%
arrange(cyl, desc(mpg)) %>%
group_by(cyl) %>%
filter(mpg > 20, hp > 75)
कई कॉलम सारांशित करें
dplyr
सभी (नॉन-ग्रुपिंग) कॉलमों में फ़ंक्शंस लागू करने के लिए summarise_all()
प्रदान करता है।
प्रत्येक स्तंभ के लिए अलग-अलग मानों की संख्या ज्ञात करने के लिए:
mtcars_tbl %>%
summarise_all(n_distinct)
# A tibble: 1 x 12
# cars mpg cyl disp hp drat wt qsec vs am gear carb
# <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
#1 32 25 3 27 22 22 29 30 2 2 3 6
प्रत्येक स्तंभ के लिए cyl
द्वारा अलग-अलग मानों की संख्या cyl
:
mtcars_tbl %>%
group_by(cyl) %>%
summarise_all(n_distinct)
# A tibble: 3 x 12
# cyl cars mpg disp hp drat wt qsec vs am gear carb
# <dbl> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int>
#1 4 11 9 11 10 10 11 11 2 2 3 2
#2 6 7 6 5 4 5 6 7 2 2 3 3
#3 8 14 12 11 9 11 13 14 1 2 2 4
ध्यान दें कि हमें केवल group_by
स्टेटमेंट जोड़ना था और बाकी कोड समान है। उत्पादन अब तीन पंक्तियों के होते हैं - के प्रत्येक अद्वितीय मान के एक cyl
।
करने के लिए summarise
विशिष्ट एकाधिक स्तंभों, उपयोग summarise_at
mtcars_tbl %>%
group_by(cyl) %>%
summarise_at(c("mpg", "disp", "hp"), mean)
# A tibble: 3 x 4
# cyl mpg disp hp
# <dbl> <dbl> <dbl> <dbl>
#1 4 26.66364 105.1364 82.63636
#2 6 19.74286 183.3143 122.28571
#3 8 15.10000 353.1000 209.21429
विशिष्ट स्तंभों का चयन करने के लिए स्तंभ नामों के स्थान पर helper
कार्यों ( ?select_helpers
) का उपयोग किया जा सकता है
कई कार्यों को लागू करने के लिए, या तो वर्ण नाम के रूप में फ़ंक्शन नाम पास करें:
mtcars_tbl %>%
group_by(cyl) %>%
summarise_at(c("mpg", "disp", "hp"),
c("mean", "sd"))
या उन्हें funs
अंदर लपेटें:
mtcars_tbl %>%
group_by(cyl) %>%
summarise_at(c("mpg", "disp", "hp"),
funs(mean, sd))
# A tibble: 3 x 7
# cyl mpg_mean disp_mean hp_mean mpg_sd disp_sd hp_sd
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 4 26.66364 105.1364 82.63636 4.509828 26.87159 20.93453
#2 6 19.74286 183.3143 122.28571 1.453567 41.56246 24.26049
#3 8 15.10000 353.1000 209.21429 2.560048 67.77132 50.97689
स्तंभ नामों को अब अलग रखने के लिए फ़ंक्शन नामों के साथ जोड़ा जा सकता है। इसे बदलने के लिए, फ़ंक्शन के साथ जोड़े जाने वाले नाम को पास करें:
mtcars_tbl %>%
group_by(cyl) %>%
summarise_at(c("mpg", "disp", "hp"),
c(Mean = "mean", SD = "sd"))
mtcars_tbl %>%
group_by(cyl) %>%
summarise_at(c("mpg", "disp", "hp"),
funs(Mean = mean, SD = sd))
# A tibble: 3 x 7
# cyl mpg_Mean disp_Mean hp_Mean mpg_SD disp_SD hp_SD
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 4 26.66364 105.1364 82.63636 4.509828 26.87159 20.93453
#2 6 19.74286 183.3143 122.28571 1.453567 41.56246 24.26049
#3 8 15.10000 353.1000 209.21429 2.560048 67.77132 50.97689
सशर्त रूप से कॉलम चुनने के लिए, summarise_if
उपयोग करें:
उन सभी स्तंभों का mean
लें जो कि cyl
द्वारा numeric
समूहबद्ध हैं:
mtcars_tbl %>%
group_by(cyl) %>%
summarise_if(is.numeric, mean)
# A tibble: 3 x 11
# cyl mpg disp hp drat wt qsec
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 4 26.66364 105.1364 82.63636 4.070909 2.285727 19.13727
#2 6 19.74286 183.3143 122.28571 3.585714 3.117143 17.97714
#3 8 15.10000 353.1000 209.21429 3.229286 3.999214 16.77214
# ... with 4 more variables: vs <dbl>, am <dbl>, gear <dbl>,
# carb <dbl>
हालांकि, कुछ चर असतत हैं, और mean
इनके मतलब नहीं है।
cyl
द्वारा केवल निरंतर चर का mean
लेने के लिए:
mtcars_tbl %>%
group_by(cyl) %>%
summarise_if(function(x) is.numeric(x) & n_distinct(x) > 6, mean)
# A tibble: 3 x 7
# cyl mpg disp hp drat wt qsec
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 4 26.66364 105.1364 82.63636 4.070909 2.285727 19.13727
#2 6 19.74286 183.3143 122.28571 3.585714 3.117143 17.97714
#3 8 15.10000 353.1000 209.21429 3.229286 3.999214 16.77214
सबसेट अवलोकन (पंक्तियाँ)
dplyr::filter()
- एक तार्किक मानदंड को पूरा करने वाले डेटा फ़्रेम में पंक्तियों के सबसेट का चयन करें:
dplyr::filter(iris,Sepal.Length>7)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 7.1 3.0 5.9 2.1 virginica
# 2 7.6 3.0 6.6 2.1 virginica
# 3 7.3 2.9 6.3 1.8 virginica
# 4 7.2 3.6 6.1 2.5 virginica
# 5 7.7 3.8 6.7 2.2 virginica
# 6 7.7 2.6 6.9 2.3 virginica
# 7 7.7 2.8 6.7 2.0 virginica
# 8 7.2 3.2 6.0 1.8 virginica
# 9 7.2 3.0 5.8 1.6 virginica
# 10 7.4 2.8 6.1 1.9 virginica
# 11 7.9 3.8 6.4 2.0 virginica
# 12 7.7 3.0 6.1 2.3 virginica
dplyr::distinct()
- डुप्लिकेट पंक्तियाँ निकालें:
distinct(iris, Sepal.Length, .keep_all = TRUE)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
# 7 4.4 2.9 1.4 0.2 setosa
# 8 4.8 3.4 1.6 0.2 setosa
# 9 4.3 3.0 1.1 0.1 setosa
# 10 5.8 4.0 1.2 0.2 setosa
# 11 5.7 4.4 1.5 0.4 setosa
# 12 5.2 3.5 1.5 0.2 setosa
# 13 5.5 4.2 1.4 0.2 setosa
# 14 4.5 2.3 1.3 0.3 setosa
# 15 5.3 3.7 1.5 0.2 setosa
# 16 7.0 3.2 4.7 1.4 versicolor
# 17 6.4 3.2 4.5 1.5 versicolor
# 18 6.9 3.1 4.9 1.5 versicolor
# 19 6.5 2.8 4.6 1.5 versicolor
# 20 6.3 3.3 4.7 1.6 versicolor
# 21 6.6 2.9 4.6 1.3 versicolor
# 22 5.9 3.0 4.2 1.5 versicolor
# 23 6.0 2.2 4.0 1.0 versicolor
# 24 6.1 2.9 4.7 1.4 versicolor
# 25 5.6 2.9 3.6 1.3 versicolor
# 26 6.7 3.1 4.4 1.4 versicolor
# 27 6.2 2.2 4.5 1.5 versicolor
# 28 6.8 2.8 4.8 1.4 versicolor
# 29 7.1 3.0 5.9 2.1 virginica
# 30 7.6 3.0 6.6 2.1 virginica
# 31 7.3 2.9 6.3 1.8 virginica
# 32 7.2 3.6 6.1 2.5 virginica
# 33 7.7 3.8 6.7 2.2 virginica
# 34 7.4 2.8 6.1 1.9 virginica
# 35 7.9 3.8 6.4 2.0 virginica
%>% (पाइप) ऑपरेटर के साथ एकत्रीकरण
पाइप (%>%) ऑपरेटर को dplyr
फ़ंक्शन के साथ संयोजन में उपयोग किया जा सकता है। इस उदाहरण में हम mtcars
डेटासेट का उपयोग करते help("mtcars")
अधिक जानकारी के लिए help("mtcars")
यह दिखाने के लिए कि किसी डेटा फ़्रेम को सारांशित करने के लिए, और फ़ंक्शन के अनुप्रयोग के परिणाम के साथ डेटा में चर जोड़ने के लिए।
library(dplyr)
library(magrittr)
df <- mtcars
df$cars <- rownames(df) #just add the cars names to the df
df <- df[,c(ncol(df),1:(ncol(df)-1))] # and place the names in the first column
1. डेटा को संक्षिप्त करें
आँकड़ों की गणना के लिए हम summarize
और उपयुक्त कार्यों का उपयोग करते हैं। इस स्थिति में n()
का उपयोग मामलों की संख्या की गणना के लिए किया जाता है।
df %>%
summarize(count=n(),mean_mpg = mean(mpg, na.rm = TRUE),
min_weight = min(wt),max_weight = max(wt))
# count mean_mpg min_weight max_weight
#1 32 20.09062 1.513 5.424
2. समूह द्वारा आँकड़ों की गणना
आंकड़ों के समूहों द्वारा आंकड़ों की गणना करना संभव है। इस मामले में सिलेंडर की संख्या और आगे के गियर की संख्या से
df %>%
group_by(cyl, gear) %>%
summarize(count=n(),mean_mpg = mean(mpg, na.rm = TRUE),
min_weight = min(wt),max_weight = max(wt))
# Source: local data frame [8 x 6]
# Groups: cyl [?]
#
# cyl gear count mean_mpg min_weight max_weight
# <dbl> <dbl> <int> <dbl> <dbl> <dbl>
#1 4 3 1 21.500 2.465 2.465
#2 4 4 8 26.925 1.615 3.190
#3 4 5 2 28.200 1.513 2.140
#4 6 3 2 19.750 3.215 3.460
#5 6 4 4 19.750 2.620 3.440
#6 6 5 1 19.700 2.770 2.770
#7 8 3 12 15.050 3.435 5.424
#8 8 5 2 15.400 3.170 3.570
DSEylr में एनएसई और स्ट्रिंग चर के उदाहरण
dplyr
नॉन-स्टैंडर्ड इवैल्यूएशन (NSE) का उपयोग करता है, यही कारण है कि हम सामान्य रूप से उद्धरण के बिना चर नामों का उपयोग कर सकते हैं। हालांकि, कभी-कभी डेटा पाइपलाइन के दौरान, हमें अन्य स्रोतों जैसे कि चमकदार चयन बॉक्स से अपने चर नाम प्राप्त करने की आवश्यकता होती है। select
जैसे कार्यों के मामले में, हम select
करने के लिए स्ट्रिंग चर का उपयोग करने के लिए बस select_
का उपयोग कर सकते हैं
variable1 <- "Sepal.Length"
variable2 <- "Sepal.Width"
iris %>%
select_(variable1, variable2) %>%
head(n=5)
# Sepal.Length Sepal.Width
# 1 5.1 3.5
# 2 4.9 3.0
# 3 4.7 3.2
# 4 4.6 3.1
# 5 5.0 3.6
लेकिन हम उपयोग करने की आवश्यकता हम इस तरह संक्षेप या फिल्टर के रूप में अन्य सुविधाओं के उपयोग करना चाहते हैं interp
से समारोह lazyeval
पैकेज
variable1 <- "Sepal.Length"
variable2 <- "Sepal.Width"
variable3 <- "Species"
iris %>%
select_(variable1, variable2, variable3) %>%
group_by_(variable3) %>%
summarize_(mean1 = lazyeval::interp(~mean(var), var = as.name(variable1)), mean2 = lazyeval::interp(~mean(var), var = as.name(variable2)))
# Species mean1 mean2
# <fctr> <dbl> <dbl>
# 1 setosa 5.006 3.428
# 2 versicolor 5.936 2.770
# 3 virginica 6.588 2.974