【发布时间】:2013-03-03 06:18:02
【问题描述】:
首先让我说我对 R 比较陌生,并且通常认为自己是一个新手程序员...所以不要以为我知道自己在做什么 :)
我有一个大矩阵,大约 300,000 x 14。它本质上是一个包含 15 分钟数据的 20 年数据集。但是,我只需要我命名为 REC.TYPE 的列包含字符串“SAO”或“FL-15”的行。
我非常低效的解决方案是逐行搜索矩阵,测试 REC.TYPE 列,如果该行不符合我的条件,则基本上删除该行。本质上...
j <- 1
for (i in 1:nrow(dataset)) {
if(dataset$REC.TYPE[j] != "SAO " && dataset$RECTYPE[j] != "FL-15") {
dataset <- dataset[-j,] }
else {
j <- j+1 }
}
在看到我的代码在一小时内只通过了大约 10% 的矩阵并且每一行都变慢之后......我认为必须有一种更有效的方法来只提取我需要的记录......尤其是当我需要对另外 8 个数据集重复此操作。
谁能指出我正确的方向?
【问题讨论】:
-
如果您提供一个可重复的小示例,您的问题对其他人会更有意义。现在我们必须猜测
dataset是什么。这会使问题更加本地化,对未来的搜索者帮助不大。 -
真正杀死你的是你一直在重写数据集。不要那样做!