0

15年間、5413社からなるデータストリームからロンドン証券取引所の株価データをダウンロードしてきました。Datastream からデータをダウンロードすると、データが利用できない会社は、列ラベルの会社名が #ERROR に置き換えられます。

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 に答える