كيفية العثور على أعلى n% من السجلات في عمود إطار البيانات باستخدام R
سؤال
لدي مجموعة بيانات توضح سعر صرف الدولار الأسترالي مقابل الدولار الأمريكي مرة واحدة يوميًا على مدار فترة تبلغ حوالي 20 عامًا.لدي البيانات في إطار بيانات، حيث يمثل العمود الأول التاريخ، والعمود الثاني هو سعر الصرف.إليك عينة من البيانات:
>data
V1 V2
1 12/12/1983 0.9175
2 13/12/1983 0.9010
3 14/12/1983 0.9000
4 15/12/1983 0.8978
5 16/12/1983 0.8928
6 19/12/1983 0.8770
7 20/12/1983 0.8795
8 21/12/1983 0.8905
9 22/12/1983 0.9005
10 23/12/1983 0.9005
كيف يمكنني عرض أعلى n% من هذه السجلات؟على سبيل المثاللنفترض أنني أريد رؤية الأيام وأسعار الصرف لتلك الأيام التي يقع فيها سعر الصرف ضمن أعلى 5% من جميع أسعار الصرف في مجموعة البيانات؟
المحلول
لأعلى 5%:
n <- 5
data[data$V2 > quantile(data$V2,prob=1-n/100),]
نصائح أخرى
لأفضل 5% أيضًا:
head(data[order(data$V2,decreasing=T),],.05*nrow(data))
يمكن استخدام حل آخر ل sqldf
إذا تم فرز البيانات على أساس V1
قيمة:
library(sqldf)
sqldf('SELECT * FROM df
ORDER BY V1
LIMIT (SELECT 0.05 * COUNT(*) FROM df)
')
يمكنك تغيير نموذج السعر 0.05
(5%
) إلى أي معدل مطلوب.
لا تنتمي إلى StackOverflow