找不到列名?

时间:2018-09-14 14:28:15

标签: r data.table

我正在尝试分组讨论,但说: 这是一个更详细的问题,没有答案。

library(data.table)
DT <- fread("Dataset.csv",encoding = 'UTF-8')
DT #until this all is fine
DT[, sum(as.numeric(Ποσότητα), na.rm=TRUE), by=.(user)]
  

[.data.table(DT,,sum(as.numeric(Ποσότητα),na.rm = TRUE)中的错误,   :找不到对象'Ποσότητα'   >

有用的信息:

colnames(DT)

"Ημερομηνία" "Χρήστης"  "Ποσότητα" 

DT
     Ημερομηνία Χρήστης   Ποσότητα
  1: 2018-09-03 user_01        -
  2: 2018-09-03 user_01        -
  3: 2018-09-03 user_02        -
  4: 2018-09-03 user_03        -
  5: 2018-09-03 user_04      222
 ---                            
154: 2018-09-10 user_21        1
155: 2018-09-10 user_22     4000
156: 2018-09-10 user_23        3

显然该名称正确,但是不起作用。我尝试了另一个带有英语单词的数据集,它奏效了。也许是该列中的破折号(-)导致了问题?

如果我这样做:

x=read.table('Dataset_b.csv',
                         stringsAsFactors=FALSE,encoding = 'UTF-8',sep =',',header = TRUE)
dt = data.table(x)
dt[, sum(as.numeric(Ποσότητα), na.rm=TRUE), by=.(Χρήστης)]

它正常工作。但是fread却没有。

应该怎么做?

1 个答案:

答案 0 :(得分:0)

破折号是一个字符,您不能将它们加在一起。您可以尝试在fread()中添加na.strings =“-”。或将破折号替换为适当的NA。

   DT[Ποσότητα==“-“, Ποσότητα:=NA]