删除列标签/名称为X.ERROR,X.ERROR.2在R - Datastream中

时间:2015-12-29 09:15:20

标签: r excel data-stream

我已经从包含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,然后删除这些列。

1 个答案:

答案 0 :(得分: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))

对于名称中包含"X.ERROR"的所有列,此值返回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