لحساب المجموع التراكمي للوقود والمسافة بناءً على الأعمدة الأخرى في R، يمكنك استخدام الحل التالي باستخدام مكتبة dplyr:
Rlibrary(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، وكذلك المجموع الكلي للوقود والمسافة. يمكنك استخدام الكود التالي للقيام بذلك:
Rlibrary(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.
الوسوم
Express R حساب مجموع معالجة بيانات