Я занимаюсь около 700 большими наборами данных (с ~ 80 переменными и до 200 тыс. Строк в наборе данных). Большинство переменных допускается только в пределах определенного диапазона или для определенных значений. В каждом наборе данных есть некоторые ошибки со значениями, которые не соответствуют этим правилам.Как повысить точность проверок для ошибок
Итак, как-то мне нужно найти эти ошибки и сделать их NA. В настоящее время я делаю это следующим образом:
library(data.table)
dataset$variable[!dataset$variable %in% c(1,2,3)] <- NA
# or
dataset$variable[!(dataset$variable >= 0 &
dataset$variable <= 150)] <- NA
... # for 80 variables
Моя проблема заключается в том, что применение этих правил занимает некоторое время (до 10 секунд), и я хотел бы, чтобы ускорить этот процесс. У вас есть идеи, как сделать его более эффективным? Или это уже самый простой способ, и я должен с этим справиться?
Большое вам спасибо!
Изменить: Я интересно, например: Будет ли быстрее перебирать строки вместо столбцов?
Вы можете попробовать использовать 'data.table' пакет. Это может быть немного более эффективным, улучшая ваше время и использует тот же синтаксис. Через 10 секунд для каждого набора данных вам потребуется около 1,5 часов, чтобы обработать все. Я бы предположил, что загрузка данных может занять больше времени, чем фактическая обработка – Vedda
Я забыл упомянуть об этом - я уже использую пакет '' data.table'''. Я бы назвал неправильный синтаксис? И да, загрузка данных также занимает много времени - вот почему я хотел бы сохранить эту часть как можно короче. Поскольку я думаю, что использование '' 'fread''' в качестве альтернативы для' '' read.csv''' – trizzou
О чем ты говоришь? 'fread' *** так *** намного быстрее, чем' read.csv'. – ialm