#r #excel
#r #excel
Вопрос:
У меня есть несколько таблиц данных в электронных таблицах 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]))amp;amp;!is.na(as.numeric(data[j,i]))){
data[j,i]<-as.numeric(data[j,i])
}
}
}
Желаемый результат:
Я хотел бы изменить данные в столбце «Расходы» (на рисунке ниже) на данные в столбце справа от него через R.
Комментарии:
1. Иногда я использую хитрость умножения на 1 ie = E1 * 1…
2. Почему бы вам просто не использовать
as.numeric
для целых столбцов? напримерdf$col1 <- as.numeric(df$col1)
?3. Вы можете использовать
col_types
-аргумент вreadxl::read_excel()
-функции для принудительного чтения текста / цифр / даты/… данные4. @Wimpel Это, кажется, работает довольно хорошо. Сработает ли это, если, скажем, у меня есть несколько пустых ячеек или символьных ячеек в столбце, который я хотел бы сделать числовым? Кроме того, существуют ли ситуации, когда это не сработает (у меня было несколько ситуаций, когда я использовал это раньше, в большом фрагменте кода, и это не сработало).
5. @Num У меня еще не возникало проблем с пустыми ячейками. Мои производственные данные составляют более 100 тысяч строк на листе Excel. Для особых случаев; вы можете определить вектор с «пустыми» значениями, определив
na
-аргумент изread_excel()
-функции для обработки ячеек с определенным содержимым как отсутствующих.
Ответ №1:
исходя из моего комментария:
Вы можете использовать col_types
-аргумент в readxl::read_excel()
-функции для принудительного чтения текста / цифр / даты/… данные