У меня есть данные из чата, где каждая строка является нажатием клавиши. Я хотел бы автоматически добавить столбец most_recent_enter
(добавленный вручную для пояснения), где он отслеживает самую последнюю строку, где keystroke
== ENTER
.
В этом примере есть перекрывающиеся сообщения, поэтому последний пользователь, который нажал ENTER
, не обязательно был самым последним пользователем. Я включаю сюда другие столбцы, чтобы показать, какая информация у меня есть.
x <- data.frame(overall_idx = 1:14,
sender=c("a","a","a","b","b","b","a",
"a","a","a","b","b","a","a"),
keystroke=c("H","I","ENTER","K","I","ENTER",
"W","H","I","C","W","H","H","T"),
ks_idx=c(0,1,2,0,1,2,0,1,2,3,0,1,3,3),
most_recent_enter=c(NA,NA,NA,"a","a","a","b","b",
"b","b","b","b","b","b")
)
Есть ли способ найти самую последнюю строку, которая удовлетворяет условию?
EDIT В моих реальных данных каждый разговор помечен номером эксперимента. Как бы сбросить это для каждого эксперимента?
x <- data.frame(exp_num=c(rep(1,14),rep(2,14)),
overall_idx = c(1:14,1:14),
sender=c("a","a","a","b","b","b","a",
"a","a","a","b","b","a","a",
"a","a","a","b","b","b","a",
"a","a","a","b","b","a","a"),
keystroke=c("H","I","ENTER","K","I","ENTER",
"W","H","I","C","W","H","H","T",
"H","I","ENTER","K","I","ENTER",
"W","H","I","C","W","H","H","T"),
ks_idx=c(0,1,2,0,1,2,0,1,2,3,0,1,3,3,0,1,2,0,1,2,0,1,2,3,0,1,3,3),
most_recent_enter=c(NA,NA,NA,"a","a","a","b","b",
"b","b","b","b","b","b",
NA,NA,NA,"a","a","a","b","b",
"b","b","b","b","b","b")
)
РЕДАКТИРОВАТЬ 2: Выбранный ответ действительно не удается, когда во втором exp_num
есть два разных отправителя. Например:
x <- data.frame(exp_num=c(rep(1,14),rep(2,14)),
overall_idx = c(1:14,1:14),
sender=c("a","a","a","b","b","b","a",
"a","a","a","b","b","a","a",
"c","c","c","d","d","d","c",
"c","c","c","d","d","c","c"),
keystroke=c("H","I","ENTER","K","I","ENTER",
"W","H","I","C","W","H","H","T",
"H","I","ENTER","K","I","ENTER",
"W","H","I","C","W","H","H","T"),
ks_idx=c(0,1,2,0,1,2,0,1,2,3,0,1,3,3,0,1,2,0,1,2,0,1,2,3,0,1,3,3),
most_recent_enter=c(NA,NA,NA,"a","a","a","b","b",
"b","b","b","b","b","b",
NA,NA,NA,"c","c","c","d","d",
"d","d","d","d","d","d")
производит одинаковые a
с и b
с для most_recent_new_enter
как в Exp 1, так и в Exp 2, а не c
s и d
s