【问题标题】:A column name can't be found?找不到列名?
【发布时间】:2018-09-14 14:28:15
【问题描述】:

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

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 不会。

应该怎么做?

【问题讨论】:

  • 一个非常低效的选择:DT[, sum(get("Ποσότητα"))]
  • @Frank 它说Error in sum(get("Ποσότητα")) : invalid 'type' (character) of argument。也试过:DT[, sum(get(as.numeric(("Ποσότητα")))],但说:Error: unexpected ']' in "DT[, sum(get(as.numeric(("Ποσότητα")))]"

标签: r data.table


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 2019-10-26
    • 2012-09-27
    相关资源
    最近更新 更多