【问题标题】:Using gsub() in a data.table在 data.table 中使用 gsub()
【发布时间】:2014-08-11 19:02:20
【问题描述】:

我有一个大数据表(大约 20,000 行)。其中一列包含从 1 到 6 的整数。

我还有一个汽车模型的特征向量(6 个模型)。

我正在尝试用相应的汽车型号替换整数。(本例中只有 2 个)

 gsub("1",paste0(labels[1]),Models)
 gsub("2",paste0(labels[2]),Models) 
 ...  

“模型”是列的名称。

labels <- c("Altima","Maxima")

在与它战斗 12 多个小时后,gsub() 无法正常工作(

样本数据:
mydata

【问题讨论】:

  • 你能展示一些你的数据吗?几乎可以肯定有更好的方法,例如matchwhichmerge
  • @Justin 我不确定如何在此处显示我的数据。但这里有更好的解释,我希望。 models 是一个数据表,由单列和 20000 行组成。标签是一个字符向量,共有 6 个名称。 Models 数据表中的值是整数 1 到 6。

标签: r data.table


【解决方案1】:

我认为您在这里不需要gsub。您所描述的是一个因子变量。

如果你的数据是

mydata <- data.table(replicate(1,sample(1:6,1000,rep=TRUE)))
models <- c("altima","maxima","sentra","is","gs","ls")

你可以这样做

mydata[[1]] <- factor(mydata[[1]], levels=seq_along(models), labels=models)

如果你真的想要一个角色而不是一个因素,那么

mydata[[1]] <- models[ mydata[[1]] ]

也可以解决问题。这两个都要求数字是连续的并且从 1 开始。

【讨论】:

  • 嗯,它适用于我的测试数据。如果您的数据有所不同,也许您可​​以在原始问题中发布一些示例数据。否则,我不知道如何回复您的评论。
  • mydata
  • @AlexKors 我已经更新了 data.table 语法,但实际上是一样的。
【解决方案2】:

您可以尝试通过以下方式使用 factor() - 在您的测试数据上为我工作。假设 mydata 中第一列的名称是 V1(默认)

mydata$V1 <- factor(mydata$V1, labels=models)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多