4

文字列であり、かなり複雑な他のさまざまな値のactorような値を含む変数があります。私は、さまざまなタイプの俳優にマッチするキャラクター パターンを見つけるため"military forces of guinea-bissau (1989-1992)"に使用してきました。たとえば、次のように新しい変数をgrep()コーディングしたいと考えています。actor_type1actor"military forces of""mutiny of"countryactor

ある種の恐ろしい for ループに頼ることなく、この新しい変数を条件付きで作成する方法について途方に暮れています。助けて!

データはおおよそ次のようになります。

|   | actor                                              | country         |
|---+----------------------------------------------------+-----------------|
| 1 | "military forces of guinea-bissau"                 | "guinea-bissau" |
| 2 | "mutiny of military forces of guinea-bissau"       | "guinea-bissau" |
| 3 | "unidentified armed group (guinea-bissau)"         | "guinea-bissau" |
| 4 | "mfdc: movement of democratic forces of casamance" | "guinea-bissau" |
4

1 に答える 1

5

データがdata.framedf にある場合:

> ifelse(!grepl('mutiny of' , df$actor) & grepl('military forces of',df$actor) & apply(df,1,function(x) grepl(x[2],x[1])),1,0)
[1] 1 0 0 0

grepl論理ベクトルを返し、これは何にでも割り当てることができますdf$actor_type

それを壊す:

!grepl('mutiny of', df$actor)最初の 2 つの要件をgrepl('military forces of', df$actor)満たします。最後の作品は、apply(df,1,function(x) grepl(x[2],x[1]))grepsごとに、俳優の国のために行きます。

于 2012-02-04T20:53:21.360 に答える