Estoy tratando de crear una nueva columna (llamada Error_1_Count) en mi marco de datos que cuenta la cantidad de veces que 'Error Type 1' aparece en una columna llamada 'Error' para cada valor diferente de 'Nombre'. A continuación se muestra un ejemplo de lo que me gustaría que fuera mi marco de datos resultante.
Intenté crear un bucle con una asignación basada en el error (ver más abajo), sin embargo, el conteo no es correcto en mi salida (solo da como resultado 0 y 1).
Avíseme cómo puedo mejorar mi código y asegúrese de que el recuento solo se restablezca para los nuevos valores de 'Nombre'. ¡Gracias!
Goal Result in Table
Name Error Error_1_Count
A Error Type 1 1
A Error Type 4 1
A Error Type 1 2
B Error Type 2 0
A Error Type 1 3
C Error Type 3 0
D Error Type 1 1
names <- unique(data.df$name)
count <- 0
for (i in names) {
data.df[data.df$name == i, data.df$error_1_count <- ifelse(data.df$error == 'Error Type 1', count + 1, count)]
}
#View(data.df)
#print(unique(data.df$error_1_count))
2 respuestas
Puede usar ave
y cumsum
.
x$Error_1_Count <- ave(x$Error == "Error Type 1", x$Name, FUN=cumsum)
x
# Name Error Error_1_Count
#1 A Error Type 1 1
#2 A Error Type 4 1
#3 A Error Type 1 2
#4 B Error Type 2 0
#5 A Error Type 1 3
#6 C Error Type 3 0
#7 D Error Type 1 1
Datos:
x <- structure(list(Name = structure(c(1L, 1L, 1L, 2L, 1L, 3L, 4L), .Label = c("A",
"B", "C", "D"), class = "factor"), Error = structure(c(1L, 4L,
1L, 2L, 1L, 3L, 1L), .Label = c("Error Type 1", "Error Type 2",
"Error Type 3", "Error Type 4"), class = "factor")), row.names = c(NA,
-7L), class = "data.frame")
Una idea similar con dplyr
library(dplyr)
df1 %>%
group_by(Name) %>%
mutate(Error = cumsum(Error == "Error Type 1"))
Datos
df1 <- structure(list(Name = c("A", "A", "A", "B", "A", "C", "D"), Error = c("Error Type 1",
"Error Type 4", "Error Type 1", "Error Type 2", "Error Type 1",
"Error Type 3", "Error Type 1")), row.names = c(NA, -7L), class = "data.frame")
Preguntas relacionadas
Nuevas preguntas
r
R es un entorno de software y lenguaje de programación de código abierto y gratuito para computación estadística, bioinformática, visualización y computación en general. Proporcione ejemplos mínimos y reproducibles junto con el resultado deseado. Use dput () para los datos y especifique todos los paquetes no base con llamadas a library (). No incruste imágenes para datos o código, use bloques de código con sangría en su lugar. Para preguntas relacionadas con estadísticas, use https://stats.stackexchange.com.