es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear nueva variable si la segunda fila de una columna coincide con un valor en R.

Me gustaría crear una nueva variable A_row_error que ponga ‘TRUE’ si first_A_row = TRUE y el mensaje de la siguiente fila = ERROR (y FALSE si la siguiente fila cuando A_row_error = TRUE es cualquier otro mensaje). Tenga en cuenta que la siguiente fila está determinada por la marca temporal y debe estar en orden ascendente. El mensaje TRUE para A_row_error también debe estar en la misma fila que cuando first_A_row = TRUE (vea la tabla de abajo para ver la salida deseada).

Conjunto de datos de ejemplo:

participant_id <- c(“ps1”, “ps1”, “ps1”, “ps1”, “ps2”, “ps2”, “ps3”, “ps3”, “ps3”, “ps3”)
timestamp <- c(0.01, 0.02, 0.03, 0.04, 0.01, 0.02, 0.01, 0.02, 0.03, 0.04)
event <- c(“A”, “A”, “A”, “B”, “B”, “A”, “A”, “A”, “B”, “A”)
first_A_row <- c(“TRUE”, “FALSE”, “FALSE”, “FALSE”, “FALSE”, “TRUE”, “TRUE”, “FALSE”, “FALSE”, “FALSE”)
message <- c(“ACCEPTED”, “ERROR”, “DECLINED”, “ACCEPTED”, “HELLO”, “BYE”, “ACCEPTED”, “BYE”, “ERROR”, “ACCEPTED”)
data.frame(participant_id, timestamp, event, first_A_row, message)

Resultado deseado:

participantid timestamp event firstArow message Arow_error
ps1 0.01 A TRUE ACCEPTED TRUE
ps1 0.02 A FALSE ERROR FALSE
ps1 0.03 A FALSE DECLINED FALSE
ps1 0.04 B FALSE ACCEPTED FALSE
ps2 0.01 B FALSE HELLO FALSE
ps2 0.02 A TRUE BYE FALSE
ps3 0.01 A TRUE ACCEPTED FALSE
ps3 0.02 A FALSE BYE FALSE
ps3 0.03 B FALSE ERROR FALSE
ps3 0.04 A FALSE ACCEPTED FALSE
Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede usar la función ifelse para crear la variable A_row_error. La sintaxis para ifelse es ifelse(testigo, sí, no), donde testigo es una declaración lógica, es el valor devuelto si la declaración es VERDADERO, y no es el valor devuelto si la declaración es FALSO.

    En este caso, la declaración lógica sería first_A_row == TRUE & message == "ERROR", y el valor sería VERDADERO y el valor no sería FALSO.

    Por lo tanto, el código para crear la variable A_row_error sería:

    A_row_error <- ifelse(first_A_row == TRUE & message == "ERROR", TRUE, FALSE)

Comments are closed.