क्या SAS PROC FREQ के बराबर R है?


18

क्या किसी को आर के बराबर एसएएस का पता है PROC FREQ?

मैं एक साथ कई चर के लिए सारांश वर्णनात्मक आँकड़े उत्पन्न करने की कोशिश कर रहा हूँ।


2
यह सवाल क्यों बंद किया गया? यह डेटा विज़ुअलाइज़ेशन से संबंधित है और कई सार्थक प्रतिक्रियाएं उत्पन्न करता है।
z0lo

जवाबों:


12

मैं उपयोग करता हूं tableऔर prop.table, लेकिन पैकेज CrossTableमें gmodelsआप एसएएस के करीब भी परिणाम दे सकते हैं। इस लिंक को देखें

इसके अलावा, "एक साथ कई चर के लिए वर्णनात्मक आंकड़े उत्पन्न करने के लिए," आप summaryफ़ंक्शन का उपयोग करेंगे ; जैसे, summary(mydata)


इसके अलावा, मैं गर्मजोशी से vcd पैकेज की सिफारिश करता हूं , लेकिन साथ में देखें: R और vcd और vcdExtra संकुल के साथ डेटा के साथ काम करना
चुल्ल

9

आधार आर में डेटा संक्षेप करना केवल एक सिरदर्द है। यह उन क्षेत्रों में से एक है जहां एसएएस काफी अच्छी तरह से काम करता है। आर के लिए, मैं plyrपैकेज की सिफारिश करता हूं ।

SAS में:

/* tabulate by a and b, with summary stats for x and y in each cell */
proc summary data=dat nway;
  class a b;
  var x y;
  output out=smry mean(x)=xmean mean(y)=ymean var(y)=yvar;
run;

साथ plyr:

smry <- ddply(dat, .(a, b), summarise, xmean=mean(x), ymean=mean(y), yvar=var(y))

8

मैं एसएएस का उपयोग नहीं करता हूं; इसलिए मैं इस पर टिप्पणी नहीं कर सकता कि निम्नलिखित उत्तर दें SAS PROC FREQ, लेकिन ये दो त्वरित रणनीतियाँ हैं जो डेटा में किसी चर का वर्णन करने के लिए त्वरित रणनीति हैं।

  • describeमें Hmiscसंख्यात्मक और गैर संख्यात्मक डेटा सहित चर का एक उपयोगी सारांश प्रदान करता है
  • describeमें psychसंख्यात्मक डेटा के लिए वर्णनात्मक आँकड़े उपलब्ध कराता है

आर उदाहरण

> library(MASS) # provides dataset called "survey"
> library(Hmisc) # Hmisc describe
> library(psych) # psych describe

निम्नलिखित का उत्पादन निम्न है Hmisc describe:

> Hmisc::describe(survey)
survey 

 12  Variables      237  Observations
----------------------------------------------------------------------------------------------------------------------
Sex 
      n missing  unique 
    236       1       2 

Female (118, 50%), Male (118, 50%) 
----------------------------------------------------------------------------------------------------------------------
Wr.Hnd 
      n missing  unique    Mean     .05     .10     .25     .50     .75     .90     .95 
    236       1      60   18.67   16.00   16.50   17.50   18.50   19.80   21.15   22.05 

lowest : 13.0 14.0 15.0 15.4 15.5, highest: 22.5 22.8 23.0 23.1 23.2 
----------------------------------------------------------------------------------------------------------------------
NW.Hnd 
      n missing  unique    Mean     .05     .10     .25     .50     .75     .90     .95 
    236       1      68   18.58   15.50   16.30   17.50   18.50   19.72   21.00   22.22 

lowest : 12.5 13.0 13.3 13.5 15.0, highest: 22.7 23.0 23.2 23.3 23.5 
----------------------------------------------------------------------------------------------------------------------
[ABBREVIATED OUTPUT]

फिर नीचे psych describeसंख्यात्मक चर के लिए आउटपुट है :

> psych::describe(survey[,sapply(survey, class) %in% c("numeric", "integer") ])
       var   n   mean    sd median trimmed   mad    min   max range  skew kurtosis   se
Wr.Hnd   1 236  18.67  1.88  18.50   18.61  1.48  13.00  23.2 10.20  0.18     0.36 0.12
NW.Hnd   2 236  18.58  1.97  18.50   18.55  1.63  12.50  23.5 11.00  0.02     0.51 0.13
Pulse    3 192  74.15 11.69  72.50   74.02 11.12  35.00 104.0 69.00 -0.02     0.41 0.84
Height   4 209 172.38  9.85 171.00  172.19 10.08 150.00 200.0 50.00  0.22    -0.39 0.68
Age      5 237  20.37  6.47  18.58   18.99  1.61  16.75  73.0 56.25  5.16    34.53 0.42

3

मैं {EPICALC} से कोडबुक फ़ंक्शन का उपयोग करता हूं, जो एक संख्यात्मक चर के लिए सारांश आँकड़े और स्तर लेबल और कारकों के लिए कोड के साथ एक आवृत्ति तालिका देता है। http://cran.r-project.org/doc/contrib/Epicalc_Book.pdf (p.50 देखें) इसके अलावा, यह बहुत उपयोगी है क्योंकि यह मात्रात्मक चर के लिए एसडी प्रदान करता है।

का आनंद लें !

नमूना उत्पादन


1
+1 (पहले से)। मैं वास्तव में जिस तरह से codebook()इसे बाहर देता है। 1 मुद्दा यह है कि naएस को गिरा दिया जाता है, जिसे आप अपने आउटपुट में शामिल कर सकते हैं। W / this (कम से कम w / कारकों) से निपटने के लिए 1 तरीका है ? Recode.is.na 1st (जैसे, "लापता"); संख्यात्मक चर के लिए, आप तुरंत स्तंभ w / बाईं ओर एक तार्किक मान के आधार पर एक नया चर बना सकते हैं is.na(), फिर चला सकते हैं codebook()। यह एक kluge का एक सा है, हालांकि।
गंग -

3

आप मेरे सारांश पैकेज ( सीआरएएन लिंक ) की जांच कर सकते हैं जिसमें एक कोडबुक जैसा फ़ंक्शन शामिल है, जिसमें मार्कडाउन और एचटीएमएल प्रारूपण विकल्प हैं।

install.packages("summarytools")
library(summarytools)
dfSummary(CO2, style = "grid", plain.ascii = TRUE)

डेटाफ्रेम सारांश

सीओ 2

+------------+---------------+-------------------------------------+--------------------+-----------+
| Variable   | Properties    | Stats / Values                      | Freqs, % Valid     | N Valid   |
+============+===============+=====================================+====================+===========+
| Plant      | type:integer  | 1. Qn1                              | 1: 7 (8.3%)        | 84/84     |
|            | class:ordered | 2. Qn2                              | 2: 7 (8.3%)        | (100.0%)  |
|            | + factor      | 3. Qn3                              | 3: 7 (8.3%)        |           |
|            |               | 4. Qc1                              | 4: 7 (8.3%)        |           |
|            |               | 5. Qc3                              | 5: 7 (8.3%)        |           |
|            |               | 6. Qc2                              | 6: 7 (8.3%)        |           |
|            |               | 7. Mn3                              | 7: 7 (8.3%)        |           |
|            |               | 8. Mn2                              | 8: 7 (8.3%)        |           |
|            |               | 9. Mn1                              | 9: 7 (8.3%)        |           |
|            |               | 10. Mc2                             | 10: 7 (8.3%)       |           |
|            |               | ... 2 other levels                  | others: 14 (16.7%) |           |
+------------+---------------+-------------------------------------+--------------------+-----------+
| Type       | type:integer  | 1. Quebec                           | 1: 42 (50%)        | 84/84     |
|            | class:factor  | 2. Mississippi                      | 2: 42 (50%)        | (100.0%)  |
+------------+---------------+-------------------------------------+--------------------+-----------+
| Treatment  | type:integer  | 1. nonchilled                       | 1: 42 (50%)        | 84/84     |
|            | class:factor  | 2. chilled                          | 2: 42 (50%)        | (100.0%)  |
+------------+---------------+-------------------------------------+--------------------+-----------+
| conc       | type:double   | mean (sd) = 435 (295.92)            | 95: 12 (14.3%)     | 84/84     |
|            | class:numeric | min < med < max = 95 < 350 < 1000   | 175: 12 (14.3%)    | (100.0%)  |
|            |               | IQR (CV) = 500 (0.68)               | 250: 12 (14.3%)    |           |
|            |               |                                     | 350: 12 (14.3%)    |           |
|            |               |                                     | 500: 12 (14.3%)    |           |
|            |               |                                     | 675: 12 (14.3%)    |           |
|            |               |                                     | 1000: 12 (14.3%)   |           |
+------------+---------------+-------------------------------------+--------------------+-----------+
| uptake     | type:double   | mean (sd) = 27.21 (10.81)           | 76 distinct values | 84/84     |
|            | class:numeric | min < med < max = 7.7 < 28.3 < 45.5 |                    | (100.0%)  |
|            |               | IQR (CV) = 19.23 (0.4)              |                    |           |
+------------+---------------+-------------------------------------+--------------------+-----------+

संपादित करें

सारांश के नए संस्करणों में , freq()फ़ंक्शन (जो कि मूल प्रश्न के संबंध में अधिक से अधिक-बिंदु-से-सीधी आवृत्ति तालिकाओं का उत्पादन करता है) डेटा फ़्रेम के साथ-साथ एकल चर भी स्वीकार करता है। क्रॉस-टेब्यूलेशन (जो freq भी करता है) के लिए, ctable()फ़ंक्शन देखें ।

freq(CO2)

आवृत्तियों

सीओ 2 $ संयंत्र

प्रकार : आदेशित कारक

          Freq   % Valid    % Valid Cum   % Total    % Total Cum
    Qn1      7      8.33           8.33      8.33           8.33
    Qn2      7      8.33          16.67      8.33          16.67
    Qn3      7      8.33          25.00      8.33          25.00
    Qc1      7      8.33          33.33      8.33          33.33
    Qc3      7      8.33          41.67      8.33          41.67
    Qc2      7      8.33          50.00      8.33          50.00
    Mn3      7      8.33          58.33      8.33          58.33
    Mn2      7      8.33          66.67      8.33          66.67
    Mn1      7      8.33          75.00      8.33          75.00
    Mc2      7      8.33          83.33      8.33          83.33
    Mc3      7      8.33          91.67      8.33          91.67
    Mc1      7      8.33         100.00      8.33         100.00
   <NA>      0                               0.00         100.00
  Total     84    100.00         100.00    100.00         100.00
सीओ 2 $ प्रकार

प्रकार : कारक

                Freq   % Valid    % Valid Cum   % Total    % Total Cum
       Quebec     42     50.00          50.00     50.00          50.00
  Mississippi     42     50.00         100.00     50.00         100.00
         <NA>      0                               0.00         100.00
        Total     84    100.00         100.00    100.00         100.00
सीओ 2 $ उपचार

प्रकार : कारक

               Freq   % Valid    % Valid Cum   % Total    % Total Cum
  nonchilled     42     50.00          50.00     50.00          50.00
     chilled     42     50.00         100.00     50.00         100.00
        <NA>      0                               0.00         100.00
       Total     84    100.00         100.00    100.00         100.00

2

सभी के सुझाव के लिए धन्यवाद। मैंने या तो टेबल या Rcmdr के अंकसूत्र समारोह का उपयोग करके समाप्त किया और साथ ही लागू किया:

apply(dataframe[,c('need_rbcs','need_platelets','need_ffp')],2,table) 

यह बहुत अच्छा काम करता है और बहुत असुविधाजनक नहीं है। हालाँकि मैं इनमें से कुछ अन्य समाधानों को आजमाऊंगा!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.