我正在将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)]
这让我觉得这是处理问题的奇怪方法;任何人都可以提出另一种方法吗?
答案 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
所以可以通过引用来完成。