J'utilise une fonction smean.cl.normal
du package Hmisc qui renvoie un vecteur avec 3 valeurs: la moyenne et les CI inférieur et supérieur. Quand je l'utilise sur un data.table
avec 2 groupes, j'obtiens 2 colonnes et 6 lignes. Y a-t-il un moyen d'obtenir le résultat avec deux lignes correspondant à 2 groupes et des colonnes séparées pour chacune des sorties de la fonction, c'est-à-dire la moyenne et les CI?data.table: lapply une fonction avec sortie multicolonne
require(Hmisc)
require(data.table)
dt = data.table(x = rnorm(100),
gr = rep(c('A', 'B'), each = 50))
dt[, lapply(.SD, smean.cl.normal), by = gr, .SDcols = "x"]
La sortie:
gr x
1: A -0.07916335
2: A -0.33656667
3: A 0.17823998
4: B -0.02745333
5: B -0.32950607
6: B 0.27459941
La sortie souhaitée:
gr Mean Lower Upper
1: A -0.07916335 -0.33656667 0.17823998
2: B -0.02745333 -0.32950607 0.27459941
Il y a probablement un meilleur moyen, mais les travaux suivants: 'dt2 <- dcast (dt [, lapply (.SD, smean.cl.normal), par = gr], gr ~ rowid (gr)); setnames (dt2, 2: 4, c ('Mean', 'Lower', 'Upper')) ' – Jaap
Merci. Oui, je l'ai fait avec dcast aussi, c'est juste que je pensais qu'il y avait quelque chose dans 'data.table' qui me manquait. – mattek
se référer à http://stackoverflow.com/questions/27494813/data-table-computing-several-column-at-once –