Questo è probabilmente abbastanza semplice ma vorrebbe essere in grado di riepilogare alcuni dati (media e media) basati su una selezione casuale di colonne e di raggrupparli per una colonna diversa.Sintassi data.table per subsettaggio e riepilogo
prega di vedere sotto:
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
ww <- sample(c("y","v"),1)
DT[,list(avg=mean(ww),med=median(ww)),by="x"]
x avg med
1: a NA y
2: b NA y
3: c NA y
Warning messages:
1: In `[.data.table`(DT, , list(avg = mean(ww), med = median(ww)), :
argument is not numeric or logical: returning NA
2: In `[.data.table`(DT, , list(avg = mean(ww), med = median(ww)), :
argument is not numeric or logical: returning NA
3: In `[.data.table`(DT, , list(avg = mean(ww), med = median(ww)), :
argument is not numeric or logical: returning NA
Se per esempio ww successo a pari "v"
allora mi aspetterei il seguente output
x avg med
1: a 2 2
2: b 5 5
3: c 8 8
Penso che sia proprio la sintassi che ho bisogno di regolare, ma sono incerto su come regolarlo ... Qualsiasi aiuto sarebbe molto apprezzato ...
Ecco un altro modo per farlo: 'DT [, lapply (lista (avg = media, med = mediana), funzione (f) f (.SD [[ww]])), di =" x "]' o con 'get', come descritto nella risposta seguente ... – Frank