我正在尝试使用XLConnect将许多Excel电子表格导入R。我感兴趣的有两列,一列包含变量名,另一列包含值。这些值因是字符或数字而异。电子表格的作者已经将数字值设置为显示各种小数,这取决于单元格,尽管我需要所有带有十进制位的数字。但是,由于列同时包含字符和数字,因此readWorksheet将所有内容转换为字符,因此似乎只读取单元格中显示在Excel中的可见小数位。
如何导入列,指定要将字符字段和打印的小数都输入到它们的全部输入值(作为字符向量)?
由于电子表格的要求,对缺少MWE表示歉意。
发布于 2014-08-13 19:42:06
根据我对您对工作表的描述的解释,我创建了一个小型测试工作表,其外观如下
Name Value
a abc
b 12.3
c 1.2
d 0.1值列中的数字比所显示的有更多的重要数字。你似乎有两个问题,第一,你问如何阅读这个问题,第二,如何将结果存储在R中。R数据帧中的列必须是所有相同的数据类型,一个列表看起来有点混乱。这样做的一种方法是两次读取工作表,第一次是将所有数据作为字符,第二次是使用readWorksheet函数中的readWorksheet选项强制将列读取为数字,并将结果存储在一个新的col中。代码看起来就像
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成为
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_Num列中的数据为数字。从这里开始,您必须整理出如何处理这两个值列。
https://stackoverflow.com/questions/25291626
复制相似问题