"123_aaa" "4567_bbbb" "787_ccc" "12345_ddddd" "56787_boeing" ,,,,,,やりたいことは,以下の通りです。
123,4567,787,12345,56787,,,,,右側のベクトル名を rhs とします。データ型は文字列
"aaa","bbbb","ccc","ddddd","boeing",,,,,(2) 次に,lhs,rhsの2列からなるデータフレーム(変数名は df )を作成したいと思います。
lhs,rhs 123,"aaa" 4567,"bbbb" 787,"ccc" 12345,"ddddd" 56787,"boeing" ,,,,,,以下,トライしてみましたが,listに負慣れなために出来ないで苦慮しております。
dat <- c("123_aaa","4567_bbbb","787_ccc","12345_ddddd","56787_boeing") ds <- strsplit(dat, "_")ds が listになることは分かりましたが,listは負慣れなために,要素の取り出しができないでおります。
No.22098 Re: R 文字列の分割 strsplit()関数 【青木繁伸】 2016/08/11(Thu) 08:26
リストを取り出すのは [[ ]] です> ds[1]リストのまま処理することもできますけど,strsplit の戻り値を unlist すれば 1 つのベクトルになります。
[[1]]
[1] "123" "aaa"
> ds[2]
[[1]]
[1] "4567" "bbbb"
> ds[[2]]
[1] "4567" "bbbb"
> ds[[2]][1]
[1] "4567"
> ds[[2]][2]
[1] "bbbb"> unlist(ds)それ以降はいろいろなやり方があるでしょう。1列目が numeric,2列目は character にしたいというのでちょっと面倒くさいですが。
[1] "123" "aaa" "4567" "bbbb" "787" "ccc" "12345" "ddddd" "56787"
[10] "boeing"> dat <- c("123_aaa","4567_bbbb","787_ccc","12345_ddddd","56787_boeing")楽しんでください。
> ds <- strsplit(dat, "_")
> x <- unlist(ds)
> f <- rep(c(TRUE, FALSE), length(dat))
> lhs <- as.numeric(x[f])
> rhs <- x[!f]
> df <- data.frame(lhs, rhs, stringsAsFactors=FALSE)
> df
lhs rhs
1 123 aaa
2 4567 bbbb
3 787 ccc
4 12345 ddddd
5 56787 boeing
> sapply(df, class)
lhs rhs
"numeric" "character"
No.22099 【御礼】Re: R 文字列の分割 strsplit()関数 【明石】 2016/08/11(Thu) 09:39
青木先生,
いつもお世話になり,ありがとうございます,明石と申します。
大変に有難いご教示をいただき,誠にありがとうございました。
今回も,助けていただきました。
listの扱いかたが見えてきましたので,
この夏休み,楽しみながらlistの勉強をさせていただきます。
心から御礼を申し上げます。
No.22103 Re: R 文字列の分割 strsplit()関数 【荒】 2016/08/16(Tue) 12:20
少し遅くなりましたが,
以下のようにしてもデータフレーム化できました。
(簡単なものしか回答できていませんね)> dat <- c("123_aaa","4567_bbbb","787_ccc","12345_ddddd","56787_boeing") > ds <- strsplit(dat, "_") > library(plyr) > df <- ldply(ds) > df V1 V2 1 123 aaa 2 4567 bbbb 3 787 ccc 4 12345 ddddd 5 56787 boeing > colnames(df) <- c("lhs","rhs") > df$lhs <- as.numeric(df$lhs)
● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る