البرمجة

حساب المجموع التراكمي في R

لحساب المجموع التراكمي للوقود والمسافة بناءً على الأعمدة الأخرى في R، يمكنك استخدام الحل التالي باستخدام مكتبة dplyr:

R
library(dplyr) # تحويل الأعمدة إلى نصائح معرفة لتسهيل الحسابات df <- df %>% mutate_at(vars(Fuel, Dist), as.character) # حساب المجموع التراكمي للوقود والمسافة بناءً على Express و Local df <- df %>% group_by(ID, Express, Local) %>% mutate( sum.fuel = as.numeric(Fuel) - lag(as.numeric(Fuel), default = 0), sum.dist = as.numeric(Dist) - lag(as.numeric(Dist), default = 0) ) %>% filter(!is.na(sum.fuel) | !is.na(sum.dist)) %>% summarise( sum.fuel = sum(sum.fuel), sum.dist = sum(sum.dist) ) # عرض النتائج print(df)

يجب عليك تغيير اسم الجدول df بالجدول الذي تريد استخدامه. الشيفرة السابقة تقوم بتحويل الأعمدة Fuel و Dist إلى أعداد صحيحة لحساب المجموع التراكمي. يتم تقسيم البيانات حسب الـ ID و Express و Local، ثم يحسب المجموع التراكمي لكل منها.

المزيد من المعلومات

بالطبع! يمكننا توسيع الحل ليشمل معلومات إضافية مثل عدد الحالات تحت كل Express و Local، وكذلك المجموع الكلي للوقود والمسافة. يمكنك استخدام الكود التالي للقيام بذلك:

R
library(dplyr) # تحويل الأعمدة إلى نصائح معرفة لتسهيل الحسابات df <- df %>% mutate_at(vars(Fuel, Dist), as.character) # حساب المجموع التراكمي للوقود والمسافة بناءً على Express و Local df <- df %>% group_by(ID, Express, Local) %>% mutate( sum.fuel = as.numeric(Fuel) - lag(as.numeric(Fuel), default = 0), sum.dist = as.numeric(Dist) - lag(as.numeric(Dist), default = 0) ) %>% filter(!is.na(sum.fuel) | !is.na(sum.dist)) %>% summarise( sum.fuel = sum(sum.fuel), sum.dist = sum(sum.dist), count = n() ) %>% arrange(ID, Express, Local) # حساب المجموع الكلي للوقود والمسافة total <- df %>% group_by(ID) %>% summarise( total.fuel = sum(sum.fuel), total.dist = sum(sum.dist), total.count = sum(count) ) # انضمام النتائج result <- merge(df, total, by = "ID") # عرض النتائج print(result)

هذا الكود يقوم بإضافة حقل إضافي يعرض عدد الحالات تحت كل Express و Local، وأيضًا يحسب المجموع الكلي للوقود والمسافة لكل ID.

زر الذهاب إلى الأعلى