это мой воспроизводимый пример:Как совместить различные условные обозначения в R?
SMTscenes.ACC SMTscenes.RESP TrialType
0 4 Old
0 3 Old
0 r New
0 2 New
0 1 New
0 r Old
0 3 Old
0 4 New
Я начал с помощью следующей команды, чтобы избавиться от «г» так, что следующий условными придерживаться чисел, то, применяя условное:
levels(df$SMTscenes.RESP)[levels(df$SMTscenes.RESP)=="r"] <- "5"
df$SMTscenes.ACC <- ifelse(df$SMTscenes.RESP >= '3' & df$TrialType == 'Old', '1', '0')
df[is.na(df)] <- 1
levels(df$SMTscenes.RESP)[levels(df$SMTscenes.RESP)=="5"] <- "r"
Это дает
SMTscenes.ACC SMTscenes.RESP TrialType
1 4 Old
1 3 Old
0 r New
0 2 New
0 1 New
1 r Old
1 3 Old
0 4 New
Вот идет сложная часть: Если я пытаюсь использовать следующее (для «New» сейчас):
levels(df$SMTscenes.RESP)[levels(df$SMTscenes.RESP)=="r"] <- "5"
df$SMTscenes.ACC <- ifelse(df$SMTscenes.RESP <= '2' & df$TrialType == 'New', '1', '0')
df[is.na(df)] <- 1
levels(df$SMTscenes.RESP)[levels(df$SMTscenes.RESP)=="5"] <- "r"
то, что произойдет, это, конечно, отменяет предыдущий шаг. Теперь я попытался настроить его по-разному, например, смешать условные выражения, но все это не помогло. Я хочу, чтобы конечный результат был следующим:
SMTscenes.ACC SMTscenes.RESP TrialType
1 4 Old
1 3 Old
0 r New
1 2 New
1 1 New
1 r Old
1 3 Old
0 4 New
Итак, любые указатели на то, как этого достичь? Я бы сделал это вручную, но есть тысячи строк данных ... Вся помощь приветствуется.
Можете ли вы объяснить словами, что вы пытаетесь сделать? –
Конечно. Я пытаюсь написать сценарий с условными выражениями, которые достигают следующих условий: Если средний столбец (SMTscenes.RESP) равен 3,4 или r, и он устарел, тогда сделайте SMTscenes.ACC = 1; если средний столбец равен 1 или 2, и он новый, тогда сделайте SMTscenes.ACC = 1. Else, сделайте это 0. – Jay