заполнение столбца в R - PullRequest
       1

заполнение столбца в R

0 голосов
/ 08 октября 2019

Привет, я работаю над упражнением по логистической регрессии, у меня есть база данных с n строками и 4 столбцами, один из которых - теоретическая вероятность, моя цель - сравнить эти теоретические вероятности с определенным значением, которое я определил, если вероятностьменьше, чем моя прогнозируемая вероятность равна 0, иначе это 1, так что я понял, что мои данные - это список из четырех списков, поэтому я создал еще один пустой список, который я бы заполнил прогнозными вероятностями, однако у меня, похоже, есть алгоритмическая проблема в циклахчто я пытался написать можешь мне помочь?

    library(readxl)
d<-read_excel("/home/ali/Downloads/roc.xlsx")
typeof(d)
#classification table

#le seuil que j'ai choisi de prendre 
seuil <- 0.095
pred <- c()
for(i in d$Proba_theo){
  for(j in pred){
    if(i<seuil){
       j = 0
       pred[j]=j
    }
    else{
       j = 1
       pred[j]=j
  }
}
}
pred

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Попробуйте это

seuil <- 0.095
pred <- rep(NA,nrow(d))
for(i in 1:nrow(d)){
  if(d$Proba_theo[i]<seuil) {
    pred[i]=0
  } else {
    pred[i]=1
  }
}
pred

или альтернативно в векторизованной форме

pred=ifelse(d$Proba_theo<seuil,0,1)
0 голосов
/ 08 октября 2019

Я думаю, что проблема может заключаться в том, что вы перезаписываете значение j, находясь в цикле for.

Что вы можете сделать, чтобы создать переменную, вы можете использовать mutate вместо цикла for. Я привел вам небольшой пример:

library(dplyr)
df = data.frame(testVar = rnorm(100))
df %>% mutate(ifelse(testVar > 0, 1, 0))

Следовательно, в вашем случае это будет что-то вроде:

d <- d %>% mutate(ifelse(Proba_theo >  0.095, 1, 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...