2014-01-16 3 views
0

Я импортировал набор данных в R, где в столбце, который должен содержать numeric, есть значения NULL. Это делает R задает класс столбца character или factor в зависимости от того, используете ли вы или нет аргумент stringAsFactors.Преобразование в числовой столбец со значениями «NULL»

Чтобы дать вам и понять, что это структура набора данных.

> str(data) 
'data.frame': 1016 obs. of 10 variables: 
$ Date  : Date, format: "2014-01-01" "2014-01-01" "2014-01-01" "2014-01-01" ... 
$ Name  : chr "Chi" "Chi" "Chi" "Chi" ... 
$ Impressions: chr "229097" "3323" "70171" "1359" ... 
$ Revenue : num 533.78 11.62 346.16 3.36 1282.28 ... 
$ Clicks  : num 472 13 369 1 963 161 1 7 317 21 ... 
$ CTR  : chr "0.21" "0.39" "0.53" "0.07" ... 
$ PCC  : chr "32" "2" "18" "0" ... 
$ PCOV  : chr "3470.52" "94.97" "2176.95" "0" ... 
$ PCROI  : chr "6.5" "8.17" "6.29" "NULL" ... 
$ Dimension : Factor w/ 11 levels "100x72","1200x627",..: 1 3 4 5 7 8 9 10 11 1 ... 

Я хотел бы преобразовать столбец PCROI как числовые, но содержащий NULL S это делает это тяжелее. Я пытался обойти вопрос установки значения 0 для всех наблюдений, когда текущее значение NULL, но я получил следующее сообщение об ошибке:

> data$PCROI[which(data$PCROI == "NULL"), ] <- 0 
Error in data$PCROI[which(data$PCROI == "NULL"), ] <- 0 : 
    incorrect number of subscripts on matrix 

Моя идея была, чтобы изменить 0 все NULL наблюдения и затем преобразуйте весь столбец в числовой, используя функцию as.numeric.

ответ

3

У вас есть ошибка синтаксиса:

data$PCROI[which(data$PCROI == "NULL"), ] <- 0 # will not work 
data$PCROI[which(data$PCROI == "NULL")] <- 0 # will work 

по пути вы можете сказать:

data$PCROI = as.numeric(data$PCROI) 

он преобразует ваш "NULL" в НС автоматически.

+0

Я не знаю, почему я не пытался с самого начала 'data $ PCROI = as.numeric (data $ PCROI)' (!?). Спасибо, Ханс! – Gianluca

Смежные вопросы