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