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

Dealing with ambiguous column names in data.table

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

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

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

问题是由 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)]

我觉得这是一种奇怪的处理问题的方式;谁能建议另一种方法?

这可以通过 freaddata.tablesetDTcheck.names 参数来完成:

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

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