v <- c("リンゴ", "ミカン", "バナナ", "スイカ", "メロン", "モモ")s1,s2を,vと突き合わせをして,以下の行列を作成したいと思います。
s1 <- c("バナナ","モモ")
s2 <- c("リンゴ","メロン")
リンゴ ミカン バナナ スイカ メロン モモこの結果を,ifelse()関数で,0/1に置換したいと思い,色々とやっていますが,うまくいきません。
s1 0 0 1 0 0 1
s2 1 0 0 0 1 0
> charmatch(v, s1)
[1] NA NA 1 NA NA 2
> charmatch(v, s2)
[1] 1 NA NA NA 2 NA
No.22893 Re: 【R】文字列ベクトルの突き合わせ 【青木繁伸】 2020/04/14(Tue) 14:21
v <- c("リンゴ", "ミカン", "バナナ", "スイカ", "メロン", "モモ")または %in% を使って
s1 <- c("バナナ","モモ")
s2 <- c("リンゴ","メロン")
#
a1 <- charmatch(v, s1) # NA NA 1 NA NA 2
ifelse(is.na(a1), 0, 1) # 0 0 1 0 0 1
# または
1 - is.na(a1) # 0 0 1 0 0 1
#
a2 <- charmatch(v, s2) # 1 NA NA NA 2 NA
ifelse(is.na(a2), 0, 1) # 1 0 0 0 1 0
# または
1 - is.na(a2) # 1 0 0 0 1 0
# 以上を踏まえ
x <- 1 - rbind(is.na(a1), is.na(a2))
rownames(x) <- c("s1", "s2")
colnames(x) <- v
x
# リンゴ ミカン バナナ スイカ メロン モモ
# s1 0 0 1 0 0 1
# s2 1 0 0 0 1 0y = rbind(v %in% s1, v %in% s2) + 0
rownames(y) <- c("s1", "s2")
colnames(y) <- v
y
No.22894 御礼(Re: 【R】文字列ベクトルの突き合わせ) 【明石】 2020/04/14(Tue) 15:11
青木先生 様;
お忙しいところを失礼いたします,明石と申します。
毎々,ご丁寧なご教示をいただき,誠にありがとうございます。
今回も,大変に良い勉強をさせていただきました。
心から,心より,御礼を申し上げます。
ありがとうございました。
//
● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る