0

我从包含 5413 家公司的数据流中下载了 15 年的伦敦证券交易所股票价格数据。当您从Datastream下载数据时,数据不可用的公司在列标签中将公司名称替换​​为#ERROR。我举例说明了excel表

Date        A B #ERROR #ERROR  E F
31-12-1999  1 2                3 4
3-1-2000                      

所以,当我将它导入 R 时,我有

Date         A  B X. ERROR  X.ERROR.1  E F
1999-12-31   1  2                      3 4
2000-1-3     NA NA                     NA NA

可以看出,R 将其更改为 X.ERROR 和 X.ERROR.1 并且行是空白,甚至没有分配 NA。我的数据集很大,申请起来会很麻烦Price$X.ERROR <- NULL。此外,我发现它效率低下。那么,如何在我的数据集中找到所有这些 X:ERROR 然后删除这些列。

4

1 回答 1

0

我创建了一个示例数据框,如下所示:

df <- data.frame(Date = 1:5,
                 A = 1:5,
                 B = 1:5,
                 X.ERROR = 1:5,
                 X.ERROR.1 = 1:5,
                 E = 1:5,
                 F = 1:5)
df
##   Date A B X.ERROR X.ERROR.1 E F
## 1    1 1 1       1         1 1 1
## 2    2 2 2       2         2 2 2
## 3    3 3 3       3         3 3 3
## 4    4 4 4       4         4 4 4
## 5    5 5 5       5         5 5 5

然后我搜索要删除的列的名称:

to_del <- grepl("X.ERROR", names(df))

对于名称中包含的所有列,这将返回 TRUE "X.ERROR"。现在您可以将它们从数据框中删除:

df <- df[!to_del]
df
##   Date A B E F
## 1    1 1 1 1 1
## 2    2 2 2 2 2
## 3    3 3 3 3 3
## 4    4 4 4 4 4
## 5    5 5 5 5 5
于 2015-12-29T09:24:34.383 回答