Rでベクトルの要素を別の集合の要素と比較する - RとLinuxと...

RとLinuxと...


Rでベクトルの要素を別の集合の要素と比較する

Rの備忘録

たとえば,ある列に日本語文字列を含むデータフレームがあるとして,その列の要素がある条件集合のどれかにマッチしていれば 1,そうでなければ 0 を返すという処理を,for ではなく,apply 族を使って実行したいとする.

# こんなデータフレーム
unique(dat1$gobi) # 語尾を一通り見てみる
[1] "ですか"       "ますか"       "んか"         "っすか"       "ていい"   ...
dat1$not <- ifelse( dat1[dat1$gobi == "んか" | 
                          dat1$gobi == "くれん"| 
                          dat1$gobi == "くれない"| 
                          dat1$gobi == "くれへん"| 
                          dat1$gobi == "もらえへん", "ID"]), 
       1, 0)

あるいは

for(i in 1:length(dat1$gobi)){
 dat1$not[i] <- ifelse(dat1$gobi[i] 
 %in% c("んか", "くれん", "くれない", "くれへん", "もらえへん"), 1, 0)
}
sum(dat1$not)

ただし,次はダメ

dat1$not <- ifelse(any(dat1$gobi == "んか"|dat1$gobi == "くれん"|
                 dat1$gobi == "くれない"| dat1$gobi == "くれへん"|
                 dat1$gobi == "もらえへん"), 1,0)
dat1$not <- ifelse(any(dat1$gobi 
   %in% c("くれん", "くれない", "くれへん", "もらえへん")), 1,0)
sum(dat1$not)

さて,これを無理に?apply系関数を使ってやってみる?

 
Link: Rの備忘録(1823d) 日録2008_3月(3910d)
Last-modified: 2010-03-17 (水) 12:05:56 (3195d)