1

私のデータファイル(obs)はおおよそ次のようになります(説明のために最初の6行のみ)

date        time    station variable 1 variable 2
22/04/2013    05      10394          4          3
22/04/2013    04      10393          3          5
22/04/2013    07      10389          6          6  
22/04/2013    04      20987          8          1
22/04/2013    02      29483          9          3
22/04/2013    03      49893          5          7

駅の数が異なるいくつかの地域の駅番号のリストが異なります。ステーション番号がステーション リストに含まれている場合、そのステーション番号を含む元のデータ ファイル (obs) の行は、変数 test03 に保存する必要がありますが、ステーション番号が含まれる行は保存しないという条件を設定したいと考えています。リストには含まれていません。

駅リストの例:

10394
10393
10389
29483

4つのステーションだけで、次のようにしました。

bed <- (obs$station == 10394 | obs$station == 10393 | obs$station == 10389 | obs$station == 29483)

test03 <- obs[bed,]

test03 は次のようになります。

date      time  station  variable 1  variable 2
22/04/2013  05    10394           4           3
22/04/2013  04    10393           3           5
22/04/2013  07    10389           6           6
22/04/2013  02    29483           9           3

これまでのところ、これはすべて非常に順調です。しかし、各ステーションを個別に入力したくない場合 (100 以上のステーションがある場合)、どうすれば同じことができますか? for ループで試してみましたが、すべてのステーションではなく、test03 に保存された最後のステーションしかありませんでした。

4

2 に答える 2

0

%in%すべてのリストをテストするために使用します。たとえば、次のようなものです。

transform(obs,
           bed =  station %in% c(10394,10393,10389,29483))

        date time station variable1 variable2   bed
1 22/04/2013    5   10394         4         3  TRUE
2 22/04/2013    4   10393         3         5  TRUE
3 22/04/2013    7   10389         6         6  TRUE
4 22/04/2013    4   20987         8         1 FALSE
5 22/04/2013    2   29483         9         3  TRUE
6 22/04/2013    3   49893         5         7 FALSE

または、正しい行のみを取得する方が簡単です。

obs[obs$station %in% c(10394,10393,10389,29483),]

       date time station variable1 variable2
1 22/04/2013    5   10394         4         3
2 22/04/2013    4   10393         3         5
3 22/04/2013    7   10389         6         6
5 22/04/2013    2   29483         9         3
于 2013-04-22T06:22:19.310 に答える