РЕДАКТИРОВАНИЕ:
В R. Я пытаюсь сгенерировать фрейм данных, полный логики, которая сообщает мне для всех значений ИСТИНА, является ли та же строка в предыдущем столбце ИСТИННОЙ. Столбцы представляют моменты времени, и я хочу знать для любой строки, которая соответствует действительности, является ли первый экземпляр этой строки истинным? Обратите внимание: мне нужно, чтобы он смотрел только на один момент времени (столбец). Если это было три колонки назад, но не в последнем, это все еще считается новым экземпляром.
пример фрейма данных:
T1<- c(TRUE, TRUE, FALSE)
T2<- c(FALSE, TRUE, FALSE)
T3<- c(TRUE, FALSE, TRUE)
df<- data.frame(cbind(T1,T2,T3))
df
выглядит так:
T1 T2 T3
1 TRUE FALSE TRUE
2 TRUE TRUE FALSE
3 FALSE FALSE TRUE
, так как я спрашиваю о предыдущем столбце, нужно добавить нулевой столбец в начале
df_w_null<-cbind("null_col"= logical(nrow(df)), df)
df_w_null
выглядит так:
null_col T1 T2 T3
1 FALSE TRUE FALSE TRUE
2 FALSE TRUE TRUE FALSE
3 FALSE FALSE FALSE TRUE
для каждой строки, где TRUE,это первый случай ИСТИНА? (является ли предыдущий столбец истинным? Если да, это не новый экземпляр, выведите false)
for (i in 2:ncol(df_w_null)){
status[i]<- as.data.frame(apply((!df_w_null[,i, drop=FALSE] == df_w_null[,i-1, drop=FALSE]), 1, isTRUE))
status<- data.frame(status)
return(status)
}
выглядит так:
status[,2:ncol(df_w_null)]
1 TRUE TRUE TRUE
2 TRUE FALSE TRUE
3 FALSE FALSE TRUE
#expected result:
1 TRUE FALSE TRUE
2 TRUE FALSE FALSE
3 FALSE FALSE TRUE