Преобразование нескольких переменных в цифры c с использованием для l oop в R - PullRequest
0 голосов
/ 07 февраля 2020

Я выполняю очистку данных в R. Есть несколько переменных, которые закодированы как переменные типа char, которые я хочу преобразовать в цифру c. Они представляют собой суммы в долларах, поэтому при загрузке CSV они были определены как переменные символов - поэтому, например, мне нужно конвертировать $ 123 456 в 123456.

Чтобы сделать эту переменную за раз, я могу использовать следующий код, который работает нормально:

data2<-data
data2$'FY 2011' <- parse_number(data$'FY 2011')

Однако я хотел бы l oop по всем переменным в кадре данных, которые необходимо преобразовать. Эти переменные не все рядом друг с другом. Я попытался использовать для l oop, как показано ниже:

#Duplicate dataset
data2<-data

#Define the variable names to loop over
x<-c('FY 2011', 'FY 2012', 'FY 2013', 'FY 2014')

#loop over the variable names, putting the converted values into the new dataset
for (var in x) {
  data2$var <- parse_number(data$var)
}

Однако это не работает, выдавая ошибку «Ошибка в parse_vector (x, col_number (), na = na, locale»). = locale, trim_ws = trim_ws): is.character (x) не TRUE Кроме того: Предупреждение: Неизвестный или неинициализированный столбец: 'var'. "

Я думаю, это потому, что я не помещаю переменную имена в l oop в нужном формате. Однако я не могу понять правильный формат. Я знаю, что есть способы использовать lapply для применения функции к нескольким переменным, но я не могу найти способ использовать это, чтобы поместить вывод в новый набор данных с теми же именами переменных. (Я привык использовать Stata, где довольно легко реализовать этот тип для l oop до l oop над именами переменных.)

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 08 февраля 2020

Оба решения akrun и r2evans работают! Спасибо - я не понимал, что могу вызывать переменные в скобках. Повторно разместите их здесь для будущих читателей:

Замените $. с [[, то есть

data2[[var]] <- parse_number(data[[var]])

Однострочник без l oop:

data2[var] <- lapply(data2[var], parse_number)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...