柱系列作爲後續行動,這個老但糖果事件:efficient row-wise operations on a data.table按行首/末從data.table
我有一些數據,(不幸)的樣子:
library('data.table')
set.seed(1234)
m <- 5
n <- 7
rb <- function() runif(m,1000,2000) * rbinom(m,1,0.5)
series_col_nms <- paste0('YearNo',1:n)
rev <- data.table(cust_id = paste0('CustNo',1:m),
other_stuff = sample(letters,m, replace=TRUE))
for(col in series_col_nms){
set(rev, j=col, value=rb())
}
setkey(rev, cust_id)
每個客戶有一行,每個客戶有不同的欄目,包括第1,2年的年度收入...
我想獲得每個客戶的收入和年份的年份指數。
我能產生期望的結果,而是帶着幾分哈克加入:
years_active <- rev[, which(.SD>0), .SDcols = series_col_nms,
keyby=cust_id][, .(min_year_active = min(V1),
max_year_active = max(V1)), keyby=cust_id]
years_active[rev]
這些嘗試獲得最小索引失敗:
rev[, apply(.SD, 1, function(x) min(which(x>0))), .SDcols=series_col_nms, by=cust_id] # returns data type error
rev[, do.call(pmin, lapply(.SD, function(x) which(x>0))), .SDcols=series_col_nms, by=cust_id] # returns empty
什麼data.table
辦法做到這一點?
我不會打電話*帶有警告*版本的清潔器,但是很髒的;) – jangorecki