首页 > 解决方案 > 更改数据框中的数据类型

问题描述

我在 R 中使用的 Excel 电子表格中有一些数据表。一些表将数字存储为文本,即数值存储为字符。

澄清一下,问题不是格式,而是数字本身。Excel(和 R)将此类数字视为字母等字符,而不是数字。

因为格式化似乎是一个问题,所以addStyle函数 inopenxlsx对我不起作用。

经过一番谷歌搜索后,我决定尝试编写一个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 将“费用”列(如下图)中的数据更改为右侧列中的数据。

图片

标签: rexcel

解决方案


来自我的评论:

您可以使用col_types-function 中的 -argumentreadxl::read_excel()来强制读取 text/numeric/date/... 数据


推荐阅读