按列删除 label/name 为 X.ERROR, X.ERROR.2 in R - Datastream

Delete Column by Column label/name as X.ERROR, X.ERROR.2 in R - Datastream

我从 5413 家公司组成的数据流中下载了伦敦证券交易所 15 年的股票价格数据。当您从 Datastream 下载数据时,其数据不可用的公司会在 label.I 列中用 #ERROR 替换公司名称说明 excel sheet

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 并且这些行是 blans 甚至没有分配 NA。我的数据集很大,应用起来会很麻烦 Price$X.ERROR <- NULL。此外,我发现它效率低下。 那么,如何在我的数据集中找到所有这些 X:ERROR 然后删除这些列。

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

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))

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

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