Изменение типа данных во фрейме данных - PullRequest
0 голосов
/ 25 марта 2019

У меня есть некоторые таблицы данных в таблицах Excel, которые я использую в R. Некоторые таблицы хранят числа в виде текста, то есть числовые значения хранятся в виде символов.

Чтобы уточнить, проблема не в форматировании, а в самих числах. Excel (и R) видит такие цифры как символы, такие как буквы, а не цифры.

Поскольку форматирование кажется проблемой, функция addStyle в openxlsx не работает для меня.

После некоторого поиска в Google я решил попытаться написать цикл for, который будет проверять каждое значение отдельно. Я написал вложенный цикл for, который проверяет каждое значение и перезаписывает его, если оно является числом (код ниже). Кажется, это работает логически, но значения не перезаписываются, т.е. значения, которые были сохранены в виде текста, все еще там.

library(readxl) 
library(openxlsx)

wb<-loadWorkbook(choose.files())

data0<-as.data.frame(read_excel(choose.files(),sheet=1,range = "B1:E1131"))
data<-data0
for(i in 1:ncol(data)){
  for(j in 1:nrow(data)){
    if(is.numeric(as.numeric(data[j,i]))&&!is.na(as.numeric(data[j,i]))){
      data[j,i]<-as.numeric(data[j,i])
    }
  }
}

Желаемый результат:

Я хотел бы изменить данные в столбце «Расходы» (на рисунке ниже) на данные в столбце справа через R.

image

1 Ответ

2 голосов
/ 25 марта 2019

исходя из моего комментария:

Вы можете использовать col_types -аргумент в функции readxl::read_excel() для принудительного чтения текста / чисел / даты / ... данных

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