Así que tengo un marco de datos, digamos con los siguientes datos:
Count Amount Org Bank
------------------------------------------
1 100 ABC Chase
15 76 DEF American Express
...
...
Cuando corro el ddply
utilizando:
result1 <- ddply(df, 4, count = sum(as.numeric(df[[1]])), amt = sum(as.numeric(df[[2]])))
Me sale el resultado con result1
teniendo el mismo valor (es decir, count
y amt
) para todas las filas, es decir,
description count amt
Chase 900 432087
American Express 900 432087
.....
que definitivamente no es el caso. De alguna manera, parece ser la última. sum()
El valor que se calcula se aplica a todas las filas. ¿Me estoy perdiendo de algo?
Respuestas
7 para la respuesta № 1Hay algunos problemas aquí:
Estás obteniendo el mismo resultado / error Porque te estás refiriendo al marco de datos original.
df
en los argumentos a ddply - por ejemplo,df[[1]]
.
Ddply no funciona así: use nombres de columna directamente, por ejemplo,Amount
yCount
.Te estás perdiendo el
.fun
argumento de función a ddply - en este casosummarize
es apropiado.
(Honestamente, no sé cómo funcionó tu código sin esto).Está utilizando una forma indocumentada (
4
) para seleccionar columnas de grupo en el.variable
argumento. Tratar.(Bank)
oc("Bank")
en lugar.
Esto debería funcionar:
ddply(df, .(Bank), summarize, count = sum(as.numeric(Count)),
amt = sum(as.numeric(Amount)))