كيفية العثور على أعلى n% من السجلات في عمود إطار البيانات باستخدام R

StackOverflow https://stackoverflow.com/questions/1563961

  •  21-09-2019
  •  | 
  •  

سؤال

لدي مجموعة بيانات توضح سعر صرف الدولار الأسترالي مقابل الدولار الأمريكي مرة واحدة يوميًا على مدار فترة تبلغ حوالي 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%) إلى أي معدل مطلوب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top