Problemas con la creación de una columna que realice una base de Suma acumulativa en otra columna en R Studio
Tengo este marco de datos. Estoy tratando de hacer un valor acumulativo usando meduan.op.only, pero tiene que ser agrupado por número de parte. Este código no está funcionando para mí ya que no está haciendo la parte de agrupación y mantiene la suma acumulativa para todos los números de parte. PLease, Asesoramiento
structure(list(Part_No = c("2352841G1", "2352841G1", "2352841G1",
"2352841G1", "2352841G1", "2352841G1", "2352841G1", "2352841G1",
"2352841G1", "2352841G1"), Op = c(50, 100, 150, 200, 300, 400,
500, 550, 600, 700), `Op Description` = c("Kit Material", "PP&C Kit Release",
"WI 0150 Assemble Housing", "WI 0200 Laser Weld Feedthus",
"WI 0300 Helium Leak Test", "WI 0400 Temperature Shock",
"WI 0500 Helium Leak Test", "WI 0550 Quality Inspection",
"WI 0600 Install Connectors", "WI 0700 Install RF Absorber and Getter"
), median_Cum_Total.Op.Plus.Queue = c(0.000225347222553359, 0.00301243055473875,
36.854632771992, 42.0687503819444, 42.1210555208336, 42.1233045138888,
42.2217789699068, 46.613732002314, 51.1846026620365, 52.9701582002309
), median.op.only = c(0.000225347222553359, 0.000618483793956262,
0.0190597048608793, 1.10557615740708, 0.0115505439815698, 0.0185535069444665,
0.0088567129632941, 0.0205043344903323, 0.0253326793980819, 0.0180307060190373
), `"Part_No"` = c("Part_No", "Part_No", "Part_No", "Part_No",
"Part_No", "Part_No", "Part_No", "Part_No", "Part_No", "Part_No"
)), row.names = c(NA, -10L), groups = structure(list(`"Part_No"` = "Part_No",
.rows = structure(list(1:10), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = 1L, class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
# Adding Cum Median of Operation Only Again in Ascending Order
Exciter_Results <- Exciter_Results%>%
group_by("Part_No") %>%
mutate(Cum_Operation.Only_Span.in.CDays = cumsum(as.numeric(median.op.only)))
Pregunta hecha hace 3 años, 5 meses, 6 días - Por binarybard1cc8
2 Respuestas:
-
En el código que proporcionaste, hay un problema con la función
group_by("Part_No")
. En lugar de pasar el nombre de la columna como un string, debes pasar el nombre de la columna sin comillas. Por lo tanto, en este caso, la corrección sería:R Exciter_Results <- Exciter_Results %>% group_by(Part_No) %>% mutate(Cum_Operation.Only_Span.in.CDays = cumsum(as.numeric(median.op.only)))
Al hacer este cambio, la suma acumulativa se realizará de manera correcta agrupando por el número de parte. ¡Espero que esta corrección te haya sido útil! Si tienes alguna otra consulta, no dudes en decírmelo.
Respondida el Dec 17, 2020 a las 21:07 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El código que proporcionaste no está agrupando por
Part_No
correctamente. Para realizar una suma acumulada agrupada porPart_No
, puedes usar la funcióncumsum()
dentro de un buclegroup_by()
. Aquí tienes el código corregido:r Exciter_Results <- Exciter_Results %>% group_by(Part_No) %>% mutate(Cum_Operation.Only_Span.in.CDays = cumsum(as.numeric(median.op.only)))
Dentro del bucle
group_by()
, la funcióncumsum()
se aplica a la columnamedian.op.only
, que contiene los valores que deseas acumular. La funciónas.numeric()
se utiliza para convertir los valores demedian.op.only
a numéricos, ya quecumsum()
solo funciona con valores numéricos. El resultado es una nueva columna llamadaCum_Operation.Only_Span.in.CDays
, que contiene la suma acumulada demedian.op.only
para cada grupo dePart_No
.Respondida el Dec 17, 2020 a las 21:14 - por Gemini
Votos positivos: 0 | Votos negativos: 0