Учитывая импортированный набор данных, как мне присвоить значение 0 новому столбцу, если значение предыдущего столбца = 1? На R - PullRequest
0 голосов
/ 30 апреля 2020

Я новичок в R, поэтому, пожалуйста, извините, если это слишком простой вопрос.

С n-back данными я пытаюсь вычислить смещение односторонних испытаний.

Я успешно импортировал набор данных из Excel в R, и все работает, кроме строки

if (df$one_back_aprime == 1) {
  df$one_back_bias <- 0
}

в следующем коде:

library(readxl)
nback_mornings_data <- read_excel("NFS4and5_mornings_R.xlsx", sheet = 1) #replace with file name
df <- data.frame(nback_mornings_data)

if (df$one_back_hit_rate > df$one_back_fa_rate) {
  df$one_back_aprime <- 0.5 + ((df$one_back_hit_rate - df$one_back_fa_rate) * (1 + df$one_back_hit_rate - df$one_back_fa_rate))/(4 * df$one_back_hit_rate * (1 - df$one_back_fa_rate))
  } else if (df$one_back_hit_rate < df$one_back_fa_rate) {
    df$one_back_aprime <- 0.5 + ((df$one_back_fa_rate - df$one_back_hit_rate) * (1 + df$one_back_fa_rate - df$one_back_hit_rate))/(4 * df$one_back_fa_rate * (1 - df$one_back_hit_rate))
  } 

if (df$one_back_aprime == 1) {
  df$one_back_bias <- 0
} else {
  df$one_back_bias <- (((1 - df$one_back_hit_rate) * (1 - df$one_back_fa_rate)) - (df$one_back_hit_rate * df$one_back_fa_rate)) / (((1 - df$one_back_hit_rate) * (1 - df$one_back_fa_rate)) + (df$one_back_hit_rate * df$one_back_fa_rate))
}

Когда я запускаю код , все работает, за исключением случая, когда one_back_aprime == 1, он печатает NaN (потому что это то, что уравнение в другое время производит). Однако я не совсем понимаю, почему это так, потому что я уже сказал, что ему должно быть присвоено значение 0. Ясно, что я делаю это неправильно.
Может ли кто-нибудь помочь помочь изменить эту часть кода так, чтобы когда one_back_aprime = 1, новый столбец one_back_bias будет показывать значение 0? Примечание. Я пробовал печатать («0»), но это тоже не работает.

Любая помощь будет высоко ценится! Я уверен, что мне чего-то очень не хватает c, но опять же, я только начинающий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...