Ich habe mem_ord (1561464ods von 74 Variablen). SITE_JOIN_DATE ist der Datumstyp und SITE_JOIN_DATE versucht, den Benutzertyp entsprechend der Bedingung zu teilen. Aber es war zu langsam, um die Ergebnisse zu sehen. Die if-Bedingung ist zu langsam. Wie kann ich die Geschwindigkeit erhöhen? Ich kann auch mehrere Kerne verwenden.beschleunigen, wenn Aussage in Datentabelle auf r
mem_ord_by_user <- mem_ord[, list(
AF_SITE_JOIN_DT = Sys.Date() - SITE_JOIN_DATE,
DAY_PAY_CNT = .N,
DAY_TOT_PRICE = .SD[, sum(TOT_PAY_PRICE)],
USER_TYPE = .SD[
,if(SITE_JOIN_DATE > '2017-07-17' && SITE_JOIN_DATE < '2017-08-05' && !is.na(SITE_JOIN_DATE)){
'event_joiner'
}else if((SITE_JOIN_DATE <= '2017-07-17' || SITE_JOIN_DATE >= '2017-08-05') && !is.na(SITE_JOIN_DATE)){
'no_event_joiner'
}else{
'null_user'
}]
),
by=list(ORD_DT, CUSTOMER_NUM),
.SDcols = c('TOT_PAY_PRICE', 'SITE_JOIN_DATE')]
Der Schlüsselwert in mem_ord ist setkeyv (mem_ord, c ('ORD_DT', 'CUSTOMER_NUM')). Dies kann auch geändert werden. –
können Sie Beispieldaten angeben? – minem
Wäre es ein schneller Unterschied, wenn Sie ein verschachteltes 'ifelse()' Konstrukt anstelle von 'if() ... verwenden würden, wenn if() '? – LAP