如何使用XLConnect和R导入混合类型列中的所有小数位?

时间:2014-08-13 16:38:18

标签: r xlconnect

我正在尝试使用XLConnect将许多Excel电子表格导入到R中。两列感兴趣,一列包含变量名,另一列包含值。这些值在字符或数字之间变化。电子表格的作者已设置数值以显示不同的小数位数,具体取决于单元格,但我需要所有带小数点的数字值。但是,由于该列包含字符和数字,readWorksheet会将所有内容转换为字符,因此似乎只读取单元格内Excel中显示的可见小数位。

如何导入一个列,指定我希望字符字段和打印小数都是完整的输入值(作为字符向量)?

由于需要电子表格,因缺乏MWE而道歉。

1 个答案:

答案 0 :(得分:0)

根据我对您对工作表描述的解释,我创建了一个看起来像

的小测试工作表
  Name Value
    a   abc
    b  12.3
    c   1.2
    d   0.1

其中,“值”列中的数字比显示的数字更重要。您似乎有两个问题,首先是您询问如何阅读此问题,第二,如何将结果存储在R中.R数据框中的列必须是所有相同的数据类型,列表似乎是有点凌乱。一种方法是读取工作表两次,第一次将Value col中的所有数据作为字符,第二次使用readWorksheet函数中的forceConversion选项强制将列读取为数字并将结果存储为新的山坳。代码看起来像

 library(XLConnect)
wb <- loadWorkbook("test.xlsx")
df <- readWorksheet(wb, "test" )
df <- cbind(df, Value_Num=readWorksheet(wb, "test", drop="Name", colTypes="numeric", forceConversion=TRUE)$Value)

这应该给df as

 Name Value Value_Num
1    a   abc        NA
2    b  12.3    12.300
3    c   1.2     1.230
4    d   0.1     0.123

其中Value列中的数据是字符,Value_Num列中的数据是数字。从那里你必须弄清楚如何处理两个Value列。