【发布时间】:2021-11-18 22:39:50
【问题描述】:
我想创建一个新变量 A_row_error,如果 first_A_row = TRUE 和下一行的消息 = ERROR(如果下一行 A_row_error = TRUE 是任何其他消息,则为 FALSE)。请注意,下一行由时间戳确定,并且必须按升序排列。 A_row_error 的 TRUE 消息也必须与 first_A_row = TRUE 位于同一行(有关所需输出,请参见下表)。
样本数据集:
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)
期望的输出:
| participant_id | timestamp | event | first_A_row | message | A_row_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 |
【问题讨论】:
标签: r data-wrangling