处理data.table中不明确的列名

时间:2015-01-09 17:42:45

标签: r data.table heading

我正在将Excel文件中的数据读入R中的data.table。文件的格式如下:

   COL_1_STUFF COL_2_STUFF COL_3_STUFF
ID EST MOE PCT EST MOE PCT EST MOE PCT

也就是说,对于每个变量(COL s),都有估计值,误差幅度和给定的百分比。

问题是由read.xlsx2创建的,我用它来导入文件如下:

data <- as.data.table(read.xlsx2(
  "file.xlsx", sheetIndex = 1L, colIndex = c(1L, 4L, 7L), startRow = 2L))

问题是read.xlsx2为一堆东西分配了相同的列名 - 导入类似于:

ID EST EST EST

即使我设置header = FALSE,我也很容易得到像

这样的内容
X1 X2 X2 X2

为了避免这种情况,我在导入后完成了以下操作:

data[ , c("col1_est", "EST") := .(EST, NULL)]
data[ , c("col2_est", "EST") := .(EST, NULL)]
data[ , c("col3_est", "EST") := .(EST, NULL)]

这让我觉得这是处理问题的奇怪方法;任何人都可以提出另一种方法吗?

1 个答案:

答案 0 :(得分:2)

一周前的更新涵盖了一个完美的解决方案,它为check.names {和data.table添加了fread个参数:

setDT(read.xlsx2("file.xlsx", sheetIndex = 1L,
                      colIndex = c(1L, 4L, 7L), startRow = 2L),
           check.names = TRUE)

自动将.1.2等添加到重复的列名称中。

感谢@DavidArenburg原创FR #1027和@Arun实施data.table;我没有花太多钱把它移到setDT所以可以通过引用来完成。