عدد إدخالات البيانات في إطار R
سؤال
أنا أتطلع للحصول على الاعتماد على البيانات التالية الإطار:
> 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
نصائح أخرى
أعتقد أن هذه عملية من خطوتين:
فرعية البيانات الأصلية الإطار وفقا تصفية الموردة (يعتقدون==FALSE);ثم
الحصول على عدد الصفوف من هذا فرعية
على الخطوة الأولى ، فرعية وظيفة هو وسيلة جيدة للقيام بذلك (مجرد بديل العادية أو مؤشر قوس التدوين).
عن الخطوة الثانية ، وأود أن استخدام خافت أو 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")