Đây là khung dữ liệu ban đầu của tôi:R: Làm thế nào để tổng hợp dựa trên nhiều tiêu chí và tóm tắt bảng
df <- read.table(text="
Date Index Event
2014-03-31 A x
2014-03-31 A x
2014-03-31 A y
2014-04-01 A y
2014-04-01 A x
2014-04-01 B x
2014-04-02 B x
2014-04-03 A x
2014-09-30 B x", header = T, stringsAsFactors = F)
date_range <- seq(as.Date(min(df$Date)), as.Date(max(df$Date)), 'days')
indices <- unique(df$Index)
events_table <- unique(df$Event)
Tôi muốn đầu ra mong muốn của tôi để tóm tắt dataframe của tôi và có một hồ sơ duy nhất cho mỗi chỉ số trong chỉ số và mỗi ngày trong date_range trong khi cung cấp giá trị cộng dồn của mỗi sự kiện trong các sự kiện_trong cột mới cho tất cả các ngày trước giá trị trong cột Ngày. Đôi khi không có hồ sơ cho mỗi chỉ mục hoặc mỗi ngày.
Dưới đây là đầu ra mong muốn của tôi:
Date Index cumsum(Event = x) cumsum(Event = y)
2014-03-31 A 0 0
2014-03-31 B 0 0
2014-04-01 A 2 1
2014-04-01 B 0 0
2014-04-02 A 3 2
2014-04-02 B 1 0
...
2014-09-29 A 4 2
2014-09-29 B 2 0
2014-09-30 A 4 2
2014-09-30 B 2 0
FYI - đây là một phiên bản đơn giản của khung dữ liệu. Có ~ 200.000 bản ghi mỗi năm với hàng trăm trường chỉ mục khác nhau cho mỗi ngày.
Tôi đã làm điều này trong quá khứ trước khi ổ đĩa cứng của tôi chiên bằng cách sử dụng by
và có lẽ aggregate
, nhưng quá trình này rất chậm và tôi không thể làm cho nó hoạt động trong khoảng thời gian này. Tôi cũng đã thử ddply
, nhưng tôi không thể nhận được chức năng cumsum
để làm việc với nó. Sử dụng ddply
, tôi đã thử một cái gì đó như:
ddply(xo1, .(Date,Index), summarise,
sum.x = sum(Event == 'x'),
sum.y = sum(Event == 'y'))
không có kết quả.
Thông qua tìm kiếm, tôi đã tìm thấy Replicating an Excel SUMIFS formula giúp tôi tích lũy dự án của mình, nhưng với điều này tôi đã không thể tìm ra cách tóm tắt chỉ xuống một bản ghi cho mỗi ngày/chỉ mục kết hợp. Tôi cũng đã xem qua số sum/aggregate data based on dates, R nhưng ở đây tôi không thể tìm ra khía cạnh ngày động.
Cảm ơn bất kỳ ai có thể trợ giúp!
Tôi nhầm lẫn với kết quả mong đợi của bạn. Trong một hàng đầu ra mong đợi của bạn, bạn mong đợi 'cumsum (Event = x)' là '0'? Mặc dù 'df' ban đầu của bạn có 2 hàng với' Date = 2014-03-31', 'Index = A' và' Event = x'? – davechilders
Thêm nhấn mạnh "Tôi muốn kết quả mong muốn để tóm tắt dataframe và có bản ghi duy nhất cho mỗi chỉ mục trong chỉ mục và mỗi ngày trong date_range trong khi cung cấp giá trị tích lũy của mỗi sự kiện trong events_table trong cột mới ** cho tất cả các ngày trước Cột ngày ** " ...... Đối với nền, tôi đang cố gắng xây dựng mô hình bằng cách sử dụng thông tin đã có sẵn cho tôi vào sáng hôm đó. Vì vậy, vào sáng ngày 2014-03-31, tôi không có sẵn dữ liệu.Trong suốt cả ngày, dữ liệu được thu thập và vào ngày 2014-04-01, dữ liệu từ 2014-03-31 là những gì tôi sẽ có sẵn để dự đoán sự kiện vào ngày 2014-04-01 – exhoosier10
Cảm ơn bạn đã làm rõ. Tôi đã bỏ lỡ điều đó trong lần đọc đầu tiên của tôi. – davechilders