【问题标题】:R Data frame - converting letters to numbers.R 数据框 - 将字母转换为数字。
【发布时间】:2017-05-31 21:40:31
【问题描述】:

我有一个包含 +200,000 行的数据框,并在其中一列(总共 18 列)中将字母转换为数字。

Extract 是我的 df,有问题的列是 Route_IATA。我的代码是

extract$Route_IATA <- lapply
(extract$Route_IATA, function(x) gsubfn('(.)', as.list(v1), toupper(as.character(x))))

system.time 返回 143 秒,这不仅速度慢,而且添加更多记录会变得更糟。我的问题是:R 中还有其他选项可以加快这个过程吗?

【问题讨论】:

  • 也许我错过了什么,但你为什么不能extract$Route_IATA &lt;- as.numeric(extract$Route_IATA)
  • 您可能还想在示例开头添加调用library(gsubfn) 以表明您正在使用它,并告诉我们v1 是什么
  • 谢谢,但该值的构建方式类似于 AA1234,其中 AA 代表任何字母/数字组合,而 1234 是数字。所以想法是将AA1234改为111234。确实包括library(gsubfn)。

标签: r optimization dataframe


【解决方案1】:

您正在对所有值 (lapply) 进行循环,这里不需要。这就是它需要这么长时间的原因。

参数x 可以是函数gsubfn 中的向量。所以这应该快得多。我没有测试过。

extract$Route_IATA <- gsubfn('(.)', as.list(v1), toupper(as.character(extract$Route_IATA)))

【讨论】:

  • 有趣,但原始代码给出了 143.01 秒的经过时间,而您的则为 158.01 秒。
猜你喜欢
  • 2016-07-07
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 2019-07-04
相关资源
最近更新 更多