Estoy intentando crear un número de pedido (1,2,3 ... etc), basado en los valores de la columna dateAndCheckNumber. Cada dateAndCheckNumber único debe tener su propio número de pedido. El siguiente código funciona, pero lleva mucho tiempo porque es un bucle for. Necesito recrear este proceso con un conjunto de datos mucho más grande y estoy buscando algo que se ejecute de manera más eficiente. Intenté usarlo mutate
con el dplyr
paquete, pero no pude averiguar cómo hacer que un contador funcionara.
dataset <- dataset[order(dataset$dateAndCheckNumber),]
for(i in 1:nrow(dataset)){
if(i==1){
dataset$orderNumber[1] <-1
count <- 1
}
else{
if(dataset$dateAndCheckNumber[i]==(dataset$dateAndCheckNumber)[i-1]){
dataset$dateAndCheckNumber[i] <- count
} else {
count <- count+1
dataset$dateAndCheckNumber[i] <- count
}
}
}
En base R, probablemente la forma más fácil y rápida de lograr esto es mediante as.integer(as.factor())
.
Aquí hay un ejemplo con los datos de la respuesta de @dayne:
set.seed(1234)
id <- sample(LETTERS[1:6],6,replace=TRUE)
df1 <- data.frame(id, counter=as.integer(as.factor(id)))
#> df1
# id counter
#1 A 1
#2 D 2
#3 D 2
#4 D 2
#5 F 3
#6 D 2
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras