एमएस वर्ड में एसपीएसएस प्लस निर्यात जैसे टेबल आउटपुट

आर में निम्न चर मानें:

test <- c(1,5,4,3,2,3,5,4,2,1,5,1,2,3,4, NA, NA, NA)

आवृत्ति तालिका प्राप्त करने के लिए, गणना के कई तरीके हैं

  • "कच्चे" आवृत्तियों, इसका अर्थ है आवृत्तियों, एनएएस
  • सहित
  • "कच्चे" प्रतिशत, उपर्युक्त के समान, केवल प्रतिशत में
  • "मान्य" आवृत्तियों, केवल उन आवृत्तियों के बिना एनएएस
  • "वैध" प्रतिशत, जैसा ऊपर है, उतना ही प्रतिशत

एसपीएसएस में आप आवृत्तियों-समारोह के साथ इस आउटपुट को आसानी से प्राप्त करते हैं।

हालांकि, आर में, यह गधे में दर्द है। अभी तक, मैं इस तालिका आउटपुट को बनाने के लिए "घंटे" खर्च किए बिना उपर्युक्त मूल्यों के साथ एक टेबल प्राप्त करने का प्रबंधन नहीं किया था।

बेशक, आर में मानों की गणना करने के लिए सभी आवश्यक फ़ंक्शन हैं, लेकिन उन्हें एक आउटपुट में सभी को एक साथ रखना मुश्किल है, खासकर यदि आपके पास एनएएस हैं, क्योंकि "कच्चे" मानों के लिए आपको एक पंक्ति की आवश्यकता है एनएएस के लिए, "वैध" मानों के लिए आप नहीं करते हैं, लेकिन यदि आप मानों को मैट्रिक्स या किसी अन्य चीज़ में एक साथ रखते हैं, तो आर शिकायत करता है कि कच्चे और वैध स्कोर के लिए पंक्ति बराबर नहीं हैं ।

एक लंबी कहानी कम करने के लिए: क्या आर में SPSS जैसी आवृत्ति सारणी बनाने की संभावना है?

और मेरा दूसरा सवाल यह है कि एमएस वर्ड में टेबल कैसे निर्यात करें।

आर में समस्या यह है कि तालिका मानों को अलग करने के लिए रिक्त स्थान का उपयोग करती है। यदि आप इसे एमएस वर्ड में कॉपी/पेस्ट करते हैं, तो आप एक उचित टेबल नहीं बना पाएंगे।

मुझे पता है कि कुछ पैकेज हैं, उदा। R2wd (जिसे मैं बिल्कुल भी काम नहीं करता था) या आरटीएफ (जो मेरे लिए ठीक काम करता है), लेकिन शायद अब आप कुछ अन्य संभावनाएं हैं।

संपादित करें:

उपर्युक्त उदाहरण की आउटपुट तालिका इस तरह दिखनी चाहिए:

Values    raw frequencies    raw percentage    valid freq.   valid percentage
1         3                  16,67             3             20,00
2         3                  16,67             3             20,00
3         3                  16,67             3             20,00
4         3                  16,67             3             20,00
5         3                  16,67             3             20,00
NA        3                  16,67            /            /

मुझे उस उदाहरण के लिए माफ़ी मांगनी है। मैंने अलग-अलग आवृत्तियों को प्राप्त करने के लिए यादृच्छिक रूप से 1 और 5 के बीच कुछ मान टाइप किए हैं। ऐसा प्रतीत होता है कि मैं अनजाने में प्रत्येक मूल्य के लिए समान आवृत्ति प्राप्त करता हूं। -.-

1
जोड़ा संपादित
विचारों: 1
यदि आपके दो प्रश्न हैं, तो बस दो अलग-अलग प्रश्न पूछना सर्वोत्तम है। विशेष रूप से इस मामले में, तालिका बनाना (एक data.frame में) और इसे Word में निर्यात करना दो बहुत ही अलग चीजें हैं।
जोड़ा लेखक Paul Hiemstra, स्रोत
मैं इस से सहमत हूँ। मैंने सोचा कि यह किसी तरह का संबंधित था। लेकिन तुम सही हो एक टेबल बनाना एमएस वर्ड को निर्यात करने से अलग है।
जोड़ा लेखक deschen, स्रोत

4 उत्तर

मैं एक पैकेज विकसित कर रहा हूं कि, अन्य चीजों के साथ, विभिन्न (वर्णनात्मक) आंकड़ों के सरल तालिका आउटपुट की अनुमति देता है। एक उदाहरण देखें इस ब्लॉग पोस्ट में या CRAN पर पैकेज </एक>।

कोड उदाहरण:

require(sjPlot) # load package
# load sample data
data(efc)
# simple frequency table
sjt.frq(efc$e42dep)

परिणाम:

table output in RStudio viewer pane

2
जोड़ा

Altough मुझे नहीं पता कि वांछित एसपीएसएस तालिका कैसा दिखना चाहिए, यहां मेरा सबसे अच्छा अनुमान है कि आप क्या करना चाहते हैं।

freqTable <- function(df, freq.digits=4, perc.digits=2){
  q1 <- table(df, useNA="always")                  # "raw" table
  q2 <- q1/sum(q1)                                 # frequencies
  q3 <- c(table(df, useNA="no"), 'NA'=NA)          # "valid" table; with NA 
  q4 <- q3/sum(q3, na.rm=TRUE)                     # frequencies
  rbind(raq.freq=round(q2, freq.digits), 
        raw.perc=round(q2*100, perc.digits), 
        val.freq=round(q4, freq.digits), 
        val.perc=round(q4*100, perc.digits))
}
freqTable(test)

#                 1       2       3       4       5    
#  raq.freq  0.1667  0.1667  0.1667  0.1667  0.1667  0.1667
#  raw.perc 16.6700 16.6700 16.6700 16.6700 16.6700 16.6700
#  val.freq  0.2000  0.2000  0.2000  0.2000  0.2000      NA
#  val.perc 20.0000 20.0000 20.0000 20.0000 20.0000      NA

आपके दूसरे प्रश्न के लिए, मैं गतिशील दस्तावेज़ बनाने के लिए knitr का उपयोग करने का सुझाव देता हूं। यदि यह एक बार की बात है, तो मुझे लगता है कि सीएसवी फ़ाइल को सहेजना और वहां से शब्द को आयात करना सबसे आसान तरीका है।

write.csv2(freqTable(test), "test_table.csv")
1
जोड़ा
तालिका को दिखने के तरीके को देखने के लिए कृपया मेरी मूल पोस्ट का संपादन देखें। आपके आउटपुट की तुलना में इसे सिर्फ ट्रांसफर करना होगा। लेकिन आपका उदाहरण बिल्कुल समस्या दिखाता है। एक को कुछ हद तक लंबा काम लिखना है। मैंने सोचा, एक और अधिक सहज तरीका हो सकता है क्योंकि यह वास्तविक आंकड़े मूलभूत है और आर में भी हर आंकड़े सॉफ्टवेयर में प्रबंधनीय होना चाहिए। कृपया अपने समाधान पर आलोचना के रूप में स्वयं को आलोचना के रूप में न देखें!
जोड़ा लेखक deschen, स्रोत

आप SPSS- जैसे आउटपुट प्राप्त करने के लिए पैकेज R2HTML का उपयोग कर सकते हैं। यह मेरे लिए एक ही परिस्थितियों में बहुत उपयोगी था।

1
जोड़ा

दुर्भाग्यवश ऐसा लगता है कि अभी तक कोई आर पैकेज नहीं है जो एसपीएसएस जैसे अच्छे आउटपुट उत्पन्न कर सकता है। तालिकाओं को उत्पन्न करने के लिए अधिकांश कार्य अपने स्वयं के विशेष स्वरूप, कक्षाएं इत्यादि को परिभाषित करते हैं। यदि आप अन्य तरीकों से निर्यात या काम करना चाहते हैं तो इससे आपको परेशानी हो जाती है।
लेकिन मेरे अनुभव से यह संभव है कि आर ऐसे आउटपुट का उत्पादन कर सके। लेकिन ऐसा लगता है कि अब तक कोई भी इस पर काम नहीं कर रहा है और इसलिए मैंने अपने कार्यों को लिखना शुरू कर दिया। मुझे परिणाम साझा करने में खुशी है (प्रगति-स्थिति में काम, लेकिन काम पूरा हो जाता है) आपके साथ:

The following function returns for all factor variables in a data.frame the frequency or the percentage (calc="perc") for each level of the factor variable "variable".
The most important thing may be that the output is a simple & user friendly data.frame. So, compared to many other functions, it's no problem to export the results an work with it in any way you want.
One example: looking at the resulting data.frame with the function "View" and then just copy and paste it to Excel, Word, etc.

मुझे एहसास है कि आगे के सुधारों के लिए बहुत अधिक संभावना है, यानी पंक्ति बनाम कॉलम प्रतिशत गणना आदि चुनने की संभावना जोड़ें, लेकिन अब यह सहायक होना चाहिए।

contitable <- function( survey_data, variable, calc="freq" ){    

  # Check which variables are not given as factor    
  # and exlude them from the given data.frame    
 survey_data_factor_test <- as.logical( sapply( Survey, FUN=is.factor) )    
  survey_data <- subset( survey_data, select=which( survey_data_factor_test ) )    

  # Inform the user about deleted variables    
  # is that proper use of printing to console during a function call??    
  # for now it worksjust fine...    
  flush.console()        
  writeLines( paste( "\n ", sum( !survey_data_factor_test, na.rm=TRUE),
            "non-factor variable(s) were excluded\n" ) )

  variable_levels <- levels(survey_data[ , variable ])    
  variable_levels_length <- length( variable_levels )    

  # Initializing the data.frame which will gather the results    
  result <- data.frame( "Variable", "Levels", t(rep( 1, each=variable_levels_length ) ) )    
  result_column_names <- paste( variable, variable_levels, sep="." )    
  names(result) <- c("Variable", "Levels", result_column_names )    

  for(column in 1:length( names(survey_data) ) ){       

      column_levels_length <- length( levels( survey_data[ , column ] ) )
      result_block <- as.data.frame( rep( names(survey_data)[column], each=column_levels_length ) )
      result_block <- cbind( result_block, as.data.frame( levels( survey_data[,column] ) ) )
      names(result_block) <- c( "Variable", "Levels" )

      results <- table( survey_data[ , column ], survey_data[ , variable ] )

      if( calc=="perc" ){ 
        results <- apply( results, MARGIN=2, FUN=function(x){ x/sum(x) }) 
        results <- round( results*100, 1 )
      }

      results <- unclass(results)
      results <- as.data.frame( results )
      names( results ) <- result_column_names
      rownames(results) <- NULL

      result_block <- cbind( result_block, results) 
      result <- rbind( result, result_block ) 
}    
result <- result[-1,]        
return( result )    
}
0
जोड़ा