سؤال

أنا أتطلع للحصول على الاعتماد على البيانات التالية الإطار:

> Santa
   Believe Age Gender Presents Behaviour
1    FALSE   9   male       25   naughty
2     TRUE   5   male       20      nice
3     TRUE   4 female       30      nice
4     TRUE   4   male       34   naughty

عدد الأطفال الذين يؤمنون.ما الأمر هل يمكنني استخدام للحصول على هذا ؟

(البيانات الفعلية الإطار هو أكبر من ذلك بكثير.لقد منحك الصفوف الأربعة الأولى...)

وذلك بفضل!

هل كانت مفيدة؟

المحلول

هل يمكن استخدام table:

R> x <- read.table(textConnection('
   Believe Age Gender Presents Behaviour
1    FALSE   9   male       25   naughty
2     TRUE   5   male       20      nice
3     TRUE   4 female       30      nice
4     TRUE   4   male       34   naughty'
), header=TRUE)

R> table(x$Believe)

FALSE  TRUE 
    1     3 

نصائح أخرى

أعتقد أن هذه عملية من خطوتين:

  1. فرعية البيانات الأصلية الإطار وفقا تصفية الموردة (يعتقدون==FALSE);ثم

  2. الحصول على عدد الصفوف من هذا فرعية

على الخطوة الأولى ، فرعية وظيفة هو وسيلة جيدة للقيام بذلك (مجرد بديل العادية أو مؤشر قوس التدوين).

عن الخطوة الثانية ، وأود أن استخدام خافت أو nrow

من مزايا استخدام فرعية:لم يكن لديك إلى تحليل النتيجة أنه يعود إلى الحصول على النتيجة تحتاج فقط الاتصال nrow على ذلك مباشرة.

حتى في حالة:

v = nrow(subset(Santa, Believe==FALSE))     # 'subset' returns a data.frame

أو ملفوفة في وظيفة مجهول:

>> fnx = function(fac, lev){nrow(subset(Santa, fac==lev))}

>> fnx(Believe, TRUE)
      3

جانبا من nrow, خافت سيتم أيضا القيام بهذه المهمة.ترجع هذه الدالة الأبعاد من بيانات الإطار (الصفوف ، cols) لذا تحتاج فقط إلى العرض المناسب مؤشر الوصول إلى عدد الصفوف:

v = dim(subset(Santa, Believe==FALSE))[1] 

إجابة على المرجع نشرت قبل هذا واحد يظهر استخدام جدول طوارئ.لا مثل هذا النهج بالنسبة للمشكلة العامة كما يتلى في العملية.هنا هو السبب.منح الجنرال مشكلة كم عدد الصفوف في هذا الإطار البيانات لها قيمة x في العمود C ؟ يمكن الإجابة باستخدام جدول طوارئ وكذلك استخدام "تصفية" نظام (كما في جوابي هنا).إذا كنت تريد صف التهم لجميع قيم معينة عامل متغير (عمود) ثم طوارئ الجدول (طريق الدعوة الجدول ويمر في العمود(s) الاهتمام) هو الأكثر منطقية الحل ؛ ومع ذلك, OP يسأل عن عدد خاصة قيمة عامل متغير, لا تهم جميع القيم.وبصرف النظر عن الأداء ضرب (قد تكون كبيرة ، قد تكون تافهة ، يعتمد فقط على حجم البيانات الإطار تجهيز خط أنابيب السياق في هذه الوظيفة يقيم).و بالطبع مرة واحدة نتيجة من الدعوة إلى طاولة عاد ، تحليل من أن النتيجة فقط العدد الذي تريده.

لذلك هذا هو السبب بالنسبة لي هذا هو تصفية بدلا من الصليب علامة التبويب المشكلة.

sum(Santa$Believe)

ويمكنك القيام summary(santa$Believe) وسوف تحصل على عدد لTRUE وFALSE

وDPLYR هذا يجعل من السهل حقا.

x<-santa%>%
   count(Believe)

إذا أردت الاعتماد من قبل مجموعة. على سبيل المثال، كم عدد الذكور ضد الإناث يعتقدون، مجرد إضافة group_by:

x<-santa%>%
   group_by(Gender)%>%
   count(Believe)

A <م> من سطر واحد حل مع data.table يمكن أن يكون

library(data.table)
setDT(x)[,.N,by=Believe]
   Believe N
1:   FALSE 1
2:    TRUE 3

وباستخدام sqldf يناسب هنا:

library(sqldf)
sqldf("SELECT Believe, Count(1) as N FROM Santa
       GROUP BY Believe")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top