¿Por qué dcast devuelve un resultado extraño? (Falta la función de agregación, se establece por defecto en ‘length’)
Cuando intento convertir un data.table largo a ancho, obtengo un resultado inesperado, como se muestra a continuación:
Cause Period RESULT
<char> <ord> <char>
1: Total, all c... 1 154.4 (0.3)
2: Total, all c... 1 154.4 (0.3)
3: Total, all c... 1 154.4 (0.3)
4: Total, all c... 1 154.4 (0.3)
5: Total, all c... 1 154.4 (0.3)
<hr>
<p>428: Information ... 4 34.8 (1.8)
429: Information ... 4 34.8 (1.8)
430: Information ... 4 34.8 (1.8)
431: Information ... 4 34.8 (1.8)
432: Information ... 4 34.8 (1.8)
> DT %>% dcast(Cause ~ Period)
Using 'Mean (skew)' as value column. Use 'value.var' to override
Aggregate function missing, defaulting to 'length'
Cause 1 2 3 4
<char> <int> <int> <int> <int>
1: Accidents (u... 12 12 12 12
2: COVID-19 [U0... 12 12 12 12
3: Diseases of ... 12 12 12 12
4: Ill-defined ... 12 12 12 12
5: Influenza an... 12 12 12 12
6: Information ... 12 12 12 12
7: Intentional ... 12 12 12 12
8: Malignant ne... 12 12 12 12
9: Total, all c... 12 12 12 12
En lugar de mostrarme las cadenas (como 154.4 (0.3)
), me muestra la longitud de la cadena (12).
¿Qué estoy haciendo mal?
¿Qué fun.aggregate
debo usar para que me muestre la cadena en lugar de su longitud?
davy.ai
El problema es que
dcast
está tratando la columnaRESULT
como una variable de factor y, de forma predeterminada, está utilizando la función agregadalength
en ella. Para mostrar las cadenas, debes usar la funciónpaste
como argumento defun.aggregate
. Aquí tienes un ejemplo:{r}
DT_wide <- dcast(DT, Cause ~ Period, value.var = "RESULT", fun.aggregate = paste)
Esto concatenará todos los valores de
RESULT
para cada combinación deCause
yPeriodo
en una sola cadena. Puedes ajustar el separador y otras opciones de la funciónpaste
según sea necesario.