खोज…


टिप्पणियों

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 , या databasedplyr प्रमुख टुकड़े 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


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow