当缺少列

时间:2017-07-05 14:23:47

标签: r data.table fread

我使用fread()来获取这样的数据:

fread(data, select = c("col1", "col2", "missing", "col3"))

其中名称为"缺少"的列不存在。 fread()会自动掉线"丢失"列和返回数据集如下:

col1   col2   col3 
a      b      c
d      e      f

...

我想知道是否有办法将结果更改为:

col1   col2   missing  col3
a      b      NA       c
d      e      NA       f

1 个答案:

答案 0 :(得分:0)

此问题已标记为data.tablefread,但已吸引a base R answer。因此,我觉得有必要发布data.table解决方案。

OP希望在data.table内的特定位置添加特定列,此列似乎缺失。 OP似乎期望select fread()参数可以用于此目的但fread()会打印

  

警告信息:
  在fread(“col1 col2 col3 \ na b c \ nd e f”,:
   在列名称标题(区分大小写)中找不到列名“缺失”,跳过。

因此必须在之后添加缺失的列:

library(data.table)

# add column by reference
DT[, missing := NA][]
   col1 col2 col3 missing
1:    a    b    c      NA
2:    d    e    f      NA
# rearrange column order
setcolorder(DT, c("col1", "col2", "missing", "col3"))[]
   col1 col2 missing col3
1:    a    b      NA    c
2:    d    e      NA    f

请注意,data.table可以通过引用来执行操作,即,不需要复制整个对象以添加单个列或更改属性。

数据

library(data.table)
DT <- fread(
"col1   col2   col3 
a      b      c
d      e      f",
select = c("col1", "col2", "missing", "col3"))