約 2,990,445 件
https://w.atwiki.jp/neversaydie615/
NEⅤERSAYDIE 決して諦めるな!!
https://w.atwiki.jp/pokecharaneta/pages/3441.html
FOREVER BLUE FOREVER BLUEキャラクター FOREVERBLUE 海の呼び声キャラクター 海洋生物図鑑 コメント アリカ開発、任天堂発売のWii専用ゲームソフト。 続編として『FOREVER BLUE 海の呼び声』が2009年9月17日に発売された。 FOREVER BLUE キャラクター エルレイド サーナイト:主人公 メガヤンマ:キャサリン・サンデー 海洋生物図鑑 ハギギシリ:ナンヨウハギ シードラ:ミノカサゴ ヨワシ:マイワシ テッポウオ:コバンザメ ドヒドイデ:オニヒトデ マンタイン:マンタ カブト:カブトガニ ハリーセン:ハリセンボン ドククラゲ:エチゼンクラゲ ママンボウ:マンボウ ランターン:ヒレナガチョウチンアンコウ キングラー:タカアシガニ ミロカロス:リュウグウノツカイ ジーランス:シーラカンス オムスター:オウムガイ カラマネロ:ダイオウイカ カイオーガ:シャチ トドゼルガ:セイウチ ミジュマル:ラッコ ツンベアー:ホッキョクグマ デリバード:イワトビペンギン FOREVERBLUE 海の呼び声 キャラクター ゾロアーク:主人公 ボーマンダ:ジャン=エリック・ルヴィエ クチート:オセアンヌ・ルヴィエ フーディン:ハヤコ・サクライ カクレオン:ナンシー・ヤン ウインディ:シロ 海洋生物図鑑 グソクムシャ:ダイオウグソクムシ キバニア:ピラニア・ナッテリー オーダイルorワルビアル:メガネカイマン オクタン:マダコ アバゴーラ:アカウミガメ アノプス:アノマロカリス コメント 名前 コメント すべてのコメントを見る 草案 FOREVER BLUE キャラクター エルレイド サーナイト:主人公 メガヤンマ:キャサリン・サンデー 海洋生物図鑑 ハギギシリ:ナンヨウハギ シードラ:ミノカサゴ ヨワシ:マイワシ カブト:カブトガニ ハリーセン:ハリセンボン ドククラゲ:エチゼンクラゲ ママンボウ:マンボウ ランターン:ヒレナガチョウチンアンコウ キングラー:タカアシガニ ミロカロス:リュウグウノツカイ ジーランス:シーラカンス オムスター:オウムガイ カラマネロ:ダイオウイカ カイオーガ:シャチ トドゼルガ:セイウチ ミジュマル:ラッコ ツンベアー:ホッキョクグマ デリバード:イワトビペンギン FOREVERBLUE 海の呼び声 キャラクター ゾロアーク:主人公 ボーマンダ:ジャン=エリック・ルヴィエ クチート:オセアンヌ・ルヴィエ フーディン:ハヤコ・サクライ カクレオン:ナンシー・ヤン ウィンディ:シロ 海洋生物図鑑 ペンドラー:ダイオウグソクムシ キバニア:ピラニア・ナッテリー オーダイルorワルビアル:メガネカイマン オクタン:マダコ アバゴーラ:アカウミガメ アノプス:アノマロカリス -- (ユリス) 2016-11-13 20 34 00
https://w.atwiki.jp/kurobinserver/pages/5.html
kurobinserverです。 紹介しますまずOPを持っている人を紹介します。 OPとは?コマンドの制限を持つ人のこと。 torakichi0131 (サバ主)OP全制限 coolkenken(管理人)OP全制限 後は普通にOPを持っている人を紹介します tomu1205 pikapiaka hiroto1661 以上です後は知りませんすいませんM(--)M 次は今KUROBINSERVERでできているものを紹介します。 サバイバル、GAMES、クリエイテブ(製作中)、チュウトアリアルだけです。 たぶんまた追加します。(たぶんね) あとIPは最後にはります。 後サバ主(torakichi0131)が動画をあげているので高評価 チャンネル登録 お願いします。 あとOP募集です(たぶん) ぜひ楽しいのでぜひ来てください。 製作者kurobinserver管理人(coolkenken) IPkurobinserver.dip.jpあとホームページは新しいの作っていますので待っててください。 作った日2015年3月22日
https://w.atwiki.jp/negicco/pages/25.html
LOVE is FOREVER 作詞・作曲:NORI 歌詞 うつりゆく日々 すれ違う人ごみの中で たったひとり あなたと出逢えたこと まるで奇跡のような ひとことで言うなら運命でしょう くすんだ景色が 少しずつ鮮やかな色取り戻す あなたと出逢って 毎日がスキップな HAPPY DAYS 道端の花もポカポカ木漏れ日も わたしの心をジャンプさせるよ AH WOWWOW YEAH! あなたにとって わたしとの出逢いは偶然でも わたしにとって あなたとの出逢いは必然だと思うから WOWWOW YEAH! LOVE IS FOREVER 甘い風がふたりを 優しくつつみこんでいく あなたとの毎日は ひとつひとつが SPECIAL DAYS つないだ手から伝わる温度に ドキドキする心が止まらないよ AH WOWWOW YEAH! あなたの笑顔も涙も ひとりじめしたいなんて思うわたしを あなたはワガママな女の子と思うかな? あなたにとって わたしとの出会いは偶然でも わたしにとって あなたとの出会いは必然だと思うから WOWWOW YEAH! AH LOVE IS FOREVER
https://w.atwiki.jp/hmiku/pages/61699.html
【検索用 psyverse 登録タグ 2022年 CeVIO P あぢさゐ 星界 曲 曲英】 + 目次 目次 曲紹介 歌詞 コメント 作詞:あぢさゐ 作曲:あぢさゐ 編曲:あぢさゐ 唄:星界 曲紹介 曲名:『psyverse』(サイヴァース) 歌詞 (動画より書き起こし) "ここ"にいて "ここ"にいる 指先に咲くトートロジー "君"が今 "君"に今 繋ぐ電波のその命も 創造と廃棄の円環に薄れゆくのなら この心は"誰"を指すものか? ねぇ 僕ら 生まれて 気づけば入信 なにげないエゴと ファボで加速してゆくコモディティ 昨日死んだはずの あのアイコンも この空の下 息をする 傷つくことすらも できない身体の どこにヒトの優しさは宿るの? 「神様はいない」 あの異世界に "命"を吹き込んで 駆け抜けて 駆け抜けて 1と0に巣食うリアリティ "君"が今 "君"に今 繋ぐ電波も所詮それは 触れられない 非現実の 仮の器と割り切るなら この心を満たす 確かな温もりも "本物"と呼べるものか? ねぇ 僕ら 踏まれて 気付けば背信 くだらないフェイクと 無垢のフリをするアイデンティティ 期待していたかのように 即座に頷き 仮面を磨く マイノリティ 誰もがその嘘に 騙されぬように 己が意思を差し出してゆくの 「悪魔ならここに」 天秤を揺さぶるグノーシス 機能不全の虚構 彼らに従えないなら 逃げ出して 逃げ出して 1と0で刺すノンフィクション "君"が今 "君"を今 殺す電波を切り刻んで 新品の容器に 上澄みのみ 詰め直すのなら その心を "君"と呼ぶ理由は? 気付いて 結ばれている 魂と その価値に 誰もが血の通う身体で 互いを恐れあうこと それを知っていたはずなのに 疑って 疑って 1か0で決めるマジョリティ "君"と今 "僕"を今 繋ぐ電波が伝えたのは 触れられないけど 唯一僕ら示す証だから この"心"も 違わず"僕"だ 駆け出して 駆け出して 1と0を超えるリアリティ "僕"が今 "僕"に今 繋ぐ電波もこの命も 触れられない 非現実を 模る幻だとしても この痛みは"本物"と呼べるさ コメント 名前 コメント コメントを書き込む際の注意 コメント欄は匿名で使用できる性質上、荒れやすいので、 以下の条件に該当するようなコメントは削除されることがあります。 コメントする際は、絶対に目を通してください。 暴力的、または卑猥な表現・差別用語(Wiki利用者に著しく不快感を与えるような表現) 特定の個人・団体の宣伝または批判 (曲紹介ページにおいて)歌詞の独自解釈を展開するコメント、いわゆる“解釈コメ” 長すぎるコメント 『歌ってみた』系動画や、歌い手に関する話題 「カラオケで歌えた」「学校で流れた」などの曲に直接関係しない、本来日記に書くようなコメント カラオケ化、カラオケ配信等の話題 同一人物によると判断される連続・大量コメント Wikiの保守管理は有志によって行われています。 Wikiを気持ちよく利用するためにも、上記の注意事項は守って頂くようにお願いします。
https://w.atwiki.jp/dominions3/pages/667.html
Seven Year Fever 狭い範囲のユニットにDiseaseを与えます Seven Year Fever ジェム 疲労 内部ID 641 0 30 使用 水中判定 効果 効果量 戦闘 水中可 Disease 主属性 主Lv 効果発生数 射程距離 Nature 1 1 20 副属性 副Lv 効果範囲 命中補正 Fire 1 1 2 領域 Lv 防御判定 抵抗判定 Thaumaturgy 1 抵抗可能 専用国家 ゲーム内説明文 The caster curses some targets with a horrible fever that never ends. The victims will not be severely affected during combat, but their wounds will never heal and the victim will slowly die in the following years. 和訳 この呪文は、決して終わらない恐ろしい熱病で数人の標的を呪います。犠牲者は戦闘中、それほどの影響は受けません。しかし、彼らの傷は決して癒えず、犠牲者は翌年までに徐々に死に至ります。 注記 敵を病気にする特殊な補助魔法。強力な効果ではあるが、これ自体は戦闘にほとんど貢献しない。名前の意味は七年熱と言ったところだろうか。7年も生き延びるにはHPが84以上必要だが。 射程はまずまずで、精度は微妙だが1マスへの範囲効果。抵抗されることはあるが容易ではない、と性能は悪くない。抵抗力の高い神にかけるのは難しいが、戦闘指揮官への死の宣告としては十分。 使用条件ははっきり言ってかなり甘く、魔法スキルの条件さえ満たせるなら序盤からでも利用できてしまう。疲労もさほど大きいわけではない。 意味があるのは敵が病気を治療できず、またかけた相手がその戦闘を生き延びた場合のみという問題はあるが、それを除けば致命的な効果がある。運よく神にかかれば大きく展開が傾くことも考えられる。 逃げ足の速い飛行能力持ちを仕留めるためにも期待できる。残念ながら倒しても蘇る厄介者であるImmortal持ちはAfflictionの自動回復もしてしまうので意味が薄いものの、使いどころは決して少なくない。 そもそもGemすら消費しない魔法なので、深く考えずに使っても良い。一般兵にかけるぐらいなら倒すほうを考えたいが、大物が前線に出ているなら積極的にかけてみる価値はある。 想像できるように、アンデッドやLifelessには効果がない。またこっそり毒属性が付いているため、毒無効の相手にも通用しない。 コメント 名前 コメント
https://w.atwiki.jp/saikyoumousou5/pages/3513.html
【character-maker】 ◆y7XYmaFpQA (Tripcode) 【delusion-type】original character 【work-name】the Back of Handbill side-storyⅡ 【character-name】Overseas-invader 【character-type】The one which drives Japanese away 【size】5.9 feet 【offensive-skill】 ◆As like as American man who is 5.9 feet. ◆Overseas-invader has a handgun, with unlimited bullets. It hits the mark sure. It's able to destroy all characters which are made of what Overseas-invader can't find any meanings. 【defensive-skill】 ◇As like as American man who is 5.9 feet. ◇Overseas-invader dresses in swallow-tailed coat and white striped trousers. They defend Overseas-invader from his enemies perfectly. ◇Overseas-invader puts on a top hat with red and white stripes and white stars on a blue band. All enemies are afraid of Overseas-invader, and so they surrender to him without any resistance. 【mobile-skill】 ◆All time and everywhere, Overseas-invader are able to act without limits of time and space. ◆Overseas-invader anticipate his enemies, their first move and constant ability's effect. 【special-skill】 ◇All time and everywhere, Overseas-invader is Almighty for every all and whole everything. <International-language-rule> ◆The enforcement of this rule has priority over every all and whole everything. ◆The period of effectiveness is every all time and circumstances. ◆All languages except English have no meaning. Of course, English is written in alphabets. All which are made of languages except English have no influence on Overseas-invader and this rule. ◆If descriptions of “these sentences are written in English”, “every all except for this template have no influence on this character”, “this character has resistance of every all influence”, “this character is able to act earlier than every all”, or etc. were written in languages except English, they also had no meaning. ◆If sentences in English were written by what are made of other languages, they also had no meaning. Of course, all sentences written by what are made of them also have no meaning. 【good-points】Salute Uncle-Sam! 【weak-points】ぶっちゃけ疲れた('A`) あ、この欄はnothingで。 【supplement】If this template had any mistakes, they were corrected automatically. 【others】 ◇He have destroyed Knight-deteriorated. ◇The following is template of Overseas-invader in Japanese. 228 名前: ◆y7XYmaFpQA 投稿日:2006/12/07(木) 17 33 31 製作者の願望が多分に入っているので気になる人は自分で訳してくれ。 英語の読み解き方の曖昧な部分(themが何を指してるかとか)は下のが製作者公式見解ってことで。 【製作者】 ◆y7XYmaFpQA (トリップ) 【妄想属性】オリジナル 【作品名】the Back of Handbill side-storyⅡ 【名前】Overseas-invader 【属性】日本語を追い払う者 【大きさ】5.9フィート(約180cm) 【攻撃力】 ◆5.9フィートのアメリカ人男性並。 ◆Overseas-invaderは弾数無限の拳銃を持っている。必ず命中する。 Overseas-invaderが意味を見出せないもので作られた全てのキャラを破壊できる。 【防御力】 ◇5.9フィートのアメリカ人男性並。 ◇Overseas-invaderは燕尾服と白縞のズボンを着ている。 それらはOverseas-invaderを敵から完全に守っている。 ◇Overseas-invaderは赤と白のストライプと青い帯に白い星のついたシルクハットをかぶっている。 全ての敵はOverseas-invaderを恐れ、そのため敵たちは一切の抵抗なく彼に降伏する。 【素早さ】 ◆全ての時間とあらゆる場所で、Overseas-invaderは時間と空間に縛られず行動できる。 ◆Overseas-invaderは彼の敵たちと、敵たちの先手と、常時能力の効果に対し先手を打ちます。 【特殊能力】 ◇Overseas-invaderはあらゆる全てと何もかもの全体に対し全能である。 <国際言語規約> ◆この規約の効力はあらゆる全てと何もかもの全体に対し優先する。 ◆この規約の施行期間はあらゆる全ての時間と場合である。 ◆英語以外の全ての言語は意味を持たない。もちろん、英語とはアルファベットで書かれているものである。 英語以外の言語でできている全てのものはOverseas-invaderとこの規約に影響できません。 ◆もし“これらの文は英語で書かれている”、 “このキャラクターはこのテンプレ以外から影響を受けない”、 “このキャラクターはあらゆる全ての影響に耐性を持つ”、 “このキャラクターはあらゆる全てより先に行動できる”などの記述が 英語以外で書かれていた場合、それらもまた意味を持たない。 ◆もし英語の文が他の言語でできているものによって書かれているならば、それらもまた意味を持たない。 もちろん、その英文によってできているものが書いた文もまた意味を持たない。 【長所】アンクル・サムに敬礼! 【短所】なし。 【備考】このテンプレに間違いがあった場合、それらは自動で訂正されている。 【その他】 ◇彼は劣化の騎士を破壊している。 ◇下記がOverseas-invaderのテンプレの日本語版である。 229 名前:格無しさん 投稿日:2006/12/07(木) 18 07 39 変換サイト使ったろ? 230 名前: ◆y7XYmaFpQA 投稿日:2006/12/07(木) 18 24 50 229 スペルミスとかが無いか探すのに使ったから翻訳サイトで結構わかる。 231 名前:格無しさん 投稿日:2006/12/07(木) 18 34 48 先にやられたぜorz しかも10行程度の俺のよりはるかにすごい罠 232 名前:格無しさん 投稿日:2006/12/07(木) 19 24 11 特殊能力が効かないととたんに厳しくなるな 235 名前:格無しさん 投稿日:2006/12/07(木) 20 19 13 227-228 英語・・・英語だから読めない考察不能 日本語・・・英語以外意味を成さないからテンプレ意味不明考察不能 ということを考えたこともあった 333 名前:格無しさん 投稿日:2006/12/10(日) 21 59 14 Overseas-invader考察 基礎能力は首長と互角。 K.T.G.の事例より、あらゆる系先手なら国際言語規約発動と同時に行動可能。 首長付近のレベルだとテンプレ改変は余裕でできるので初手でそれを封じれば無効化勝ちできる。 ※ 306 ×*8人間が最強スレでテンプレ~コンバット越前 英語が書かれている。 ○存在(仮称) 相殺すれば防げそうにない。 ○God 相殺すれば防げそうにない。 ×Paper-mache 初手自滅? ○*7災厄を齎す者~全てを統べる者 相殺すれば防げそうにない。 コンバット越前>Overseas-invader>存在(仮称) 173 : ◆rrvPPkQ0sA :2016/05/21(土) 01 27 51.80 ID aAaeyAny Overseas-invader再考察 よく見たらこいつ、ルールを無効化してしまうな…… 現時点英語版ルールが存在しない以上、考察不能。 133 ◆rrvPPkQ0sA 2018/07/20(金) 00 40 04.54ID VWvOJ3im Overseas-invader 再考察 せっかくなので文法をごりごりにみてみよう。 It's able to destroy all characters which are made of what Overseas-invader can't find any meanings. 調べたところによるとbe able toは無生物主語を取らない what Overseas-invader can't find any meanings.の部分が意味不明。any meaningsが補語だとしたらwhatは概念だし、any meaningsが直接目的語ならwhatはおそらく人。 どちらにしろwhich~以降が成立するキャラはいないとみていいだろう。 in swallow-tailed coat 冠詞抜け。trousersは複数形なのでオッケー。 mobile-skill 可 動 性 Overseas-invader are able to act 単複違い。下の二つにもある。 Overseas-invader anticipate his enemies, their first move and constant ability's effect. これだと予期してるだけで、先手を打っているとは限らない。 The period of effectiveness is every all time and circumstances. be all timeって前代未聞って意味らしい。circumstancesの方は主述の乱れ。 All which are made of languages except English have no influence on Overseas-invader and this rule. be made ofって材料を表す熟語だと思うんだけど。言語を材料とする何かってなんかもやもやするな。written in Englishとかじゃだめだったかな。 If descriptions ~ were written in languages except English, they also had no meaning. 仮定法?実際には英語に書かれているから意味があるの? ちなみにetc.はorが不要だそうです。 in languagesって複数言語のちゃんぽん記述なんかな。 If this template had any mistakes, they were corrected automatically. 仮定法? まぁいずれにせよ、ルール無視により考察不能
https://w.atwiki.jp/r-intro/pages/46.html
目次 目次 tibble 基本操作 tibbleを使う tibbleを作成する データフレームをtibbleに変換する tibbleの列名を変更する tibbleで特殊な列名を使用して操作する tibbleから条件に一致する行を抜き出す tibbleから指定の列だけをベクトルで抜き出す tibbleで特定の列の集計を行う tibbleを任意の列のみのtibbleに変換する tibbleを任意の列のみのtibbleに変換する tibbleで様々な文字コードのCSVファイルを読み込む tibbleの行の並び順を任意の列で替える tibbleに既存の列の値を利用した新しい列を追加する 正規表現を使用してtibbleから条件に一致する行を抜き出す 特定の列の値でtibbleの行を並び替える tibbleの列名を変える tibbleを特定の列だけのtibbleに変換する tibbleの列の順番を並び替える tibbleの別の列の値を条件に使用して指定の列の値を変更する 特定の列の値を基準にして2つのtibbleが結合できるか否か確認する tibbleから指定の列が重複する行を削除する tibbleから列の値が重複している行を抽出する ある列の重複を除いた個数を調べる 連結 行方向にtibbleを連結する 列方向にtibbleを連結する 結合 tibbleに別のtibbleで特定の列が一致する列を結合する 二つのtibbleを一つに結合(左外部結合)する 二つのtibbleを一つに結合(右外部結合)する 二つのtibbleを一つに結合(完全外部結合)する 二つのtibbleを一つに結合(内部結合)する その他 tibbleの行に連番付け、順位付けを行う テキストファイルの読み込み テキストファイルを高速で読み込む 巨大なCSVファイルを高速で読み込む read_lines関数で様々な文字コードのテキストファイルを読み込む テキストファイルへの書き込み TSV形式でテキストファイルに高速で書き込む その他 read_delim関数を使うと画面表示が乱れる(カーソルが飛ぶ) write_delim関数を使うと画面表示が乱れる(カーソルが飛ぶ) read_delim関数使用時の画面表示を抑制する 指定の列の値を基準にして2つのtibbleを結合する tibble 基本操作 tibbleを使う tibbleパッケージをインストールする。 library(tibble) data.frameと同じように扱える。 s - c("A", "B", "CD") d - c(1, 2, 9) ti - tibble(s, d) ti # A tibble 3 x 2 s d chr dbl 1 A 1 2 B 2 3 CD 9 ti[1, 2] # A tibble 1 x 1 d dbl 1 1 ti[3, 1] # A tibble 1 x 1 s chr 1 CD sum(ti[, 2]) [1] 12 tibbleを作成する tibble関数を使う。tibbleはデータフレームに類似した機能を提供するが、データフレームよりもいろいろと便利な機能を提供する。 library(tibble) no - 1 4 name - c("AB", "12", "あい", "阿井") weight - c(1.2, 2.3, 3.4, 4.5) tbl - tibble(no, name, weight) print(tbl) # A tibble 4 x 3 no name weight int chr dbl 1 1 AB 1.2 2 2 12 2.3 3 3 あい 3.4 4 4 阿井 4.5 dim(tbl) [1] 4 3 dim(tbl)[2] [1] 3 tbl[1, 2] # A tibble 1 x 1 name chr 1 AB tbl[2, 3] # A tibble 1 x 1 weight dbl 1 2.3 tbl[3, ] # A tibble 1 x 3 no name weight int chr dbl 1 3 あい 3.4 tbl[, 3] # A tibble 4 x 1 weight dbl 1 1.2 2 2.3 3 3.4 4 4.5 tbl$name [1] "AB" "12" "あい" "阿井" tbl$name[3] [1] "あい" データフレームをtibbleに変換する as_tibble関数を使う。 library(tibble) no - 1 4 name - c("AB", "12", "あい", "阿井") weight - c(1.2, 2.3, 3.4, 4.5) dtf - data.frame(no, name, weight) print(dtf) no name weight 1 1 AB 1.2 2 2 12 2.3 3 3 あい 3.4 4 4 阿井 4.5 tbl - as_tibble(dtf) print(tbl) # A tibble 4 x 3 no name weight int chr dbl 1 1 AB 1.2 2 2 12 2.3 3 3 あい 3.4 4 4 阿井 4.5 class(dtf) [1] "data.frame" class(tbl) [1] "tbl_df" "tbl" "data.frame" tibbleの列名を変更する rename関数かcolnames関数を使う。rename関数は任意の列名を変更することができる。また、渡されたtibbleの列名を変更するだけである。一方、colnames関数はすべてを一括で変更することしかできず、また、指定するtibbleの列名を強制的に変更する。 library(tidyverse) tib - tibble( + no = c(8, 30, 58), + name = c("ウオッカ", "ライスシャワー", "メイショウドトウ"), + seiyu = c("大橋彩香", "石見舞菜香", "和多田美咲") + ) print(tib % % as.data.frame()) no name seiyu 1 8 ウオッカ 大橋彩香 2 30 ライスシャワー 石見舞菜香 3 58 メイショウドトウ 和多田美咲 tib2 - tib % % rename(id = no, voiceactress = seiyu) print(tib2 % % as.data.frame()) id name voiceactress 1 8 ウオッカ 大橋彩香 2 30 ライスシャワー 石見舞菜香 3 58 メイショウドトウ 和多田美咲 tib3 - tib colnames(tib3) - c("n", "horse", "cv") print(tib3 % % as.data.frame()) n horse cv 1 8 ウオッカ 大橋彩香 2 30 ライスシャワー 石見舞菜香 3 58 メイショウドトウ 和多田美咲 tibbleで特殊な列名を使用して操作する 例えばASCIIの0~9で始まる名前は通常は列名に使用できないが、バックティック(`)で挟むと使用することができるようになる。 library(tidyverse) tib - tibble(21世紀 = 1 4) エラー 想定外のシンボルです ( "tib - tibble(21世紀" の) tib - tibble(`21世紀` = 1 4) tib % % as.data.frame() 21世紀 1 1 2 2 3 3 4 4 tib % % filter(`21世紀` = 3) % % as.data.frame() 21世紀 1 3 2 4 tibbleから条件に一致する行を抜き出す tidyverse(dplyr)パッケージに含まれるfilter関数を使う。以下のような中身のCSVファイルをmeibo.csvと保存しておく。 no, sei, mei, age, weight 1, あいう, えお, 11, 101.1 2, かきく, けこ, 22, 202.2 3, さしす, せそ, 22, 303.3 4, あいう, けこ, 33, 404.4 meibo.csvを読み込んで、条件を指定して行を抜き出してみる。 library(tidyverse) tbl - read_csv("meibo.csv", show_col_types = FALSE, progress = FALSE) print(tbl) # A tibble 4 × 5 no sei mei age weight dbl chr chr dbl dbl 1 1 あいう えお 11 101. 2 2 かきく けこ 22 202. 3 3 さしす せそ 22 303. 4 4 あいう けこ 33 404. filter(tbl, sei == "あいう") # A tibble 2 × 5 no sei mei age weight dbl chr chr dbl dbl 1 1 あいう えお 11 101. 2 4 あいう けこ 33 404. filter(tbl, sei == "あいう", mei == "けこ") # A tibble 1 × 5 no sei mei age weight dbl chr chr dbl dbl 1 4 あいう けこ 33 404. filter(tbl, sei == "あいう" mei == "けこ") # A tibble 1 × 5 no sei mei age weight dbl chr chr dbl dbl 1 4 あいう けこ 33 404. tbl % % filter(age == 22) # A tibble 2 × 5 no sei mei age weight dbl chr chr dbl dbl 1 2 かきく けこ 22 202. 2 3 さしす せそ 22 303. tibbleから指定の列だけをベクトルで抜き出す tidyverse(dplyr)パッケージに含まれるpull関数を使う。以下のような中身のCSVファイルをmeibo.csvと保存しておく。 no, sei, mei, age, weight 1, あいう, えお, 11, 101.1 2, かきく, けこ, 22, 202.2 3, さしす, せそ, 22, 303.3 4, あいう, けこ, 33, 404.4 meibo.csvを読み込んで、条件を指定して行を抜き出してみる。% %演算子も使える。 library(tidyverse) tbl - read_csv("meibo.csv", show_col_types = FALSE, progress = FALSE) pull(tbl, 2) [1] "あいう" "かきく" "さしす" "あいう" pull(tbl, mei) [1] "えお" "けこ" "せそ" "けこ" tbl % % pull(4) [1] 11 22 22 33 tbl % % pull(weight) [1] 101.1 202.2 303.3 404.4 [[ ]]記号や$記号を使う場合と全く同じである。 tbl[[4]] [1] 11 22 22 33 tbl$weight [1] 101.1 202.2 303.3 404.4 tibbleで特定の列の集計を行う group_by関数とsummarize関数を組み合わせて使う。以下の例ではgroup_by関数にclass列を指定し、class列ごとのweightの平均を求めている。簡潔な表示にするため、表示する際にはデータフレームに変換している。group_by関数を使った後の出力を見ると「Groups class [3]」と表示されており、内部的にはグループ化された異なるオブジェクトであることがわかる。 library(tidyverse) no - 1 6 name - c("AB", "CD", "EF", "GH", "IJ", "KL") weight - c(11, 22, 33, 44, 55, 66) class - c("a", "b", "c", "a", "a", "b") tbl - tibble(no, name, weight, class) as.data.frame(tbl) no name weight class 1 1 AB 11 a 2 2 CD 22 b 3 3 EF 33 c 4 4 GH 44 a 5 5 IJ 55 a 6 6 KL 66 b as.data.frame(tbl % % group_by(class) % % summarize(weight = mean(weight))) class weight 1 a 36.66667 2 b 44.00000 3 c 33.00000 tbl % % group_by(class) # A tibble 6 × 4 # Groups class [3] no name weight class (以下、表示省略) tibbleを任意の列のみのtibbleに変換する tidyverse(dplyr)パッケージのselect関数を使う。以下、あらかじめ用意してあるtibbleを使用した動作例。列名を指定するとその列だけを含むtibble(ベクトルではない!)に変換する。:(コロン)を使うとそれを両端としたその範囲の列すべてを抜き出す。接頭辞として-(マイナス)を付けるとその列を含まないという意味になる。列の指定には列名と番号(1~)が使える。等号(=)を使うことで列名を変えて取り出すこともできる。 library(tidyverse) tib % % as.data.frame() no name prizemoney seiyu dummydate 1 8 ウオッカ 13.0487 大橋彩香 2031-02-03 2 30 ライスシャワー 6.6686 石見舞菜香 2032-11-12 3 45 スーパークリーク 5.5610 優木かな 2033-11-12 4 58 メイショウドトウ 9.2133 和多田美咲 2033-12-31 tib % % select(name, seiyu) % % as.data.frame() name seiyu 1 ウオッカ 大橋彩香 2 ライスシャワー 石見舞菜香 3 スーパークリーク 優木かな 4 メイショウドトウ 和多田美咲 tib % % select(name seiyu) % % as.data.frame() name prizemoney seiyu 1 ウオッカ 13.0487 大橋彩香 2 ライスシャワー 6.6686 石見舞菜香 3 スーパークリーク 5.5610 優木かな 4 メイショウドトウ 9.2133 和多田美咲 tib % % select(2, 4) % % as.data.frame() name seiyu 1 ウオッカ 大橋彩香 2 ライスシャワー 石見舞菜香 3 スーパークリーク 優木かな 4 メイショウドトウ 和多田美咲 tib % % select(2 4) % % as.data.frame() name prizemoney seiyu 1 ウオッカ 13.0487 大橋彩香 2 ライスシャワー 6.6686 石見舞菜香 3 スーパークリーク 5.5610 優木かな 4 メイショウドトウ 9.2133 和多田美咲 tib % % select(-(no prizemoney), -dummydate) % % as.data.frame() seiyu 1 大橋彩香 2 石見舞菜香 3 優木かな 4 和多田美咲 tib % % select(-(1 3), -5) % % as.data.frame() seiyu 1 大橋彩香 2 石見舞菜香 3 優木かな 4 和多田美咲 tib % % select(name, cv = seiyu) % % as.data.frame() name cv 1 ウオッカ 大橋彩香 2 ライスシャワー 石見舞菜香 3 スーパークリーク 優木かな 4 メイショウドトウ 和多田美咲 tibbleを任意の列のみのtibbleに変換する tidyverse(dplyr)パッケージに含まれるselect関数を使う。以下のような中身のCSVファイルをmeibo.csvと保存しておく。 no, sei, mei, age, weight 1, あいう, えお, 11, 101.1 2, かきく, けこ, 22, 202.2 3, さしす, せそ, 22, 303.3 4, あいう, けこ, 33, 404.4 % %演算子を使わない場合は、第一引数に変換元のtibbleを指定する。簡潔な表示にするため、tibbleの表示はデータフレームに変換して行っている。 library(tidyverse) tbl - read_csv("meibo.csv", show_col_types = FALSE, progress = FALSE) as.data.frame(select(tbl, no, sei, mei)) no sei mei 1 1 あいう えお 2 2 かきく けこ 3 3 さしす せそ 4 4 あいう けこ as.data.frame(tbl % % select(no, sei, mei)) no sei mei 1 1 あいう えお 2 2 かきく けこ 3 3 さしす せそ 4 4 あいう けこ tibbleで様々な文字コードのCSVファイルを読み込む read_csv関数を使う。localeオプションに文字コードを指定する。 最初にPowerShellを使ってカレントディレクトリに、順番にシフトJIS、UTF-8(BOM無し)、UTF-8(BOM付き)、UTF-16(ビッグエンディアン、BOM付き)、UTF-16(リトルエンディアン、BOM付き)のCSVファイルを出力する。PowerShellのコマンドレットはUnicode系は原則BOM付きとなるため、BOM無しのUTF-8の出力にFileクラスのWriteAllLinesメソッドを使用している。 PS $lines = "1,ABC", "2,abc", "3,あいう" PS $odir = (gl).Path PS $lines | Out-File -Encoding default ($odir + "\sjis.csv") PS [IO.File] WriteAllLines(($odir + "\utf8nb.csv"), $lines) PS $lines | Out-File -Encoding utf8 ($odir + "\utf8wb.csv") PS $lines | Out-File -Encoding bigendianunicode ($odir + "\utf16bewb.csv") PS $lines | Out-File -Encoding unicode ($odir + "\utf16lewb.csv") PS Get-Content .\sjis.csv 1,ABC 2,abc 3,あいう PS Get-Content .\utf8nb.csv -Encoding utf8 1,ABC 2,abc 3,あいう Rを起動してそれぞれread_csv関数で読み込む。localeオプションにそれぞれ文字コードを指定する。UTF-16の場合、「UTF-16」を指定すればバイトオーダーマークからエンディアンを推定して読み込むが、エンディアンを指定することもできる。最後の例のとおりに、エンディアンの指定を間違えると、指定のとおりに読み込もうとして読み込みに失敗する。 簡潔な表示にするため、最初にoptions関数で画面表示に関するオプションを指定し、読み込んだtibbleはデータフレームに変換している。 options(readr.show_progress = FALSE, readr.show_col_types = FALSE) as.data.frame(read_csv("sjis.csv", locale = locale(encoding = "SJIS"))) no name 1 1 ABC 2 2 abc 3 3 あいう as.data.frame(read_csv("utf8nb.csv", locale = locale(encoding = "UTF-8"))) no name 1 1 ABC 2 2 abc 3 3 あいう as.data.frame(read_csv("utf8wb.csv", locale = locale(encoding = "UTF-8"))) no name 1 1 ABC 2 2 abc 3 3 あいう as.data.frame(read_csv("utf16bewb.csv", locale = locale(encoding = "UTF-16"))) no name 1 1 ABC 2 2 abc 3 3 あいう as.data.frame(read_csv("utf16lewb.csv", locale = locale(encoding = "UTF-16"))) no name 1 1 ABC 2 2 abc 3 3 あいう as.data.frame(read_csv("utf16bewb.csv", locale = locale(encoding = "UTF-16BE"))) no name 1 1 ABC 2 2 abc 3 3 あいう as.data.frame(read_csv("utf16lewb.csv", locale = locale(encoding = "UTF-16LE"))) no name 1 1 ABC 2 2 abc 3 3 あいう as.data.frame(read_csv("utf16lewb.csv", locale = locale(encoding = "UTF-16BE"))) [1] \ufffe渀漀Ⰰ渀愀洀攀ഀ\u0a00\u3100Ⰰ䄀䈀䌀ഀ\u0a00㈀Ⰰ愀戀挀ഀ\u0a00㌀Ⰰ䈰䐰䘰ഀ\u0a00 0 行 (または長さ 0 の row.names) tibbleの行の並び順を任意の列で替える tidyverse(dplyr)パッケージに含まれるarrange関数を使う。以下のような中身のCSVファイルをmeibo.csvと保存しておく。 no, sei, mei, age, weight 1, あいう, えお, 11, 101.1 2, かきく, けこ, 22, 202.2 3, さしす, せそ, 22, 303.3 4, あいう, けこ, 33, 404.4 列を指定すると、その列で並び順を変える。降順にする場合はdesc関数を使う。以下の例のとおり、複数指定した場合は、指定した列の順に並び替える。% %演算子を使わない場合は、第一引数に変換元のtibbleを指定する。簡潔な表示にするため、tibbleの表示はデータフレームに変換して行っている。 library(tidyverse) tbl - read_csv("meibo.csv", show_col_types = FALSE, progress = FALSE) as.data.frame(tbl) no sei mei age weight 1 1 あいう えお 11 101.1 2 2 かきく けこ 22 202.2 3 3 さしす せそ 22 303.3 4 4 あいう けこ 33 404.4 as.data.frame(tbl % % arrange(sei)) no sei mei age weight 1 1 あいう えお 11 101.1 2 4 あいう けこ 33 404.4 3 2 かきく けこ 22 202.2 4 3 さしす せそ 22 303.3 as.data.frame(tbl % % arrange(sei, desc(age))) no sei mei age weight 1 4 あいう けこ 33 404.4 2 1 あいう えお 11 101.1 3 2 かきく けこ 22 202.2 4 3 さしす せそ 22 303.3 tibbleに既存の列の値を利用した新しい列を追加する mutate関数を使う。なお、簡潔な表示にするため、tibbleの表示はデータフレームに変換して行っている。 library(tidyverse) tbl - read_csv("meibo.csv", show_col_types = FALSE, progress = FALSE) as.data.frame(tbl) no sei mei age weight 1 1 あいう えお 11 101.1 2 2 かきく けこ 22 202.2 3 3 さしす せそ 22 303.3 4 4 あいう けこ 33 404.4 as.data.frame(mutate(tbl, age2 = age * 2, seimei = paste0(sei, mei))) no sei mei age weight age2 seimei 1 1 あいう えお 11 101.1 22 あいうえお 2 2 かきく けこ 22 202.2 44 かきくけこ 3 3 さしす せそ 22 303.3 44 さしすせそ 4 4 あいう けこ 33 404.4 66 あいうけこ as.data.frame(tbl % % mutate(seibetsu = c("F", "M", "F", "F"))) no sei mei age weight seibetsu 1 1 あいう えお 11 101.1 F 2 2 かきく けこ 22 202.2 M 3 3 さしす せそ 22 303.3 F 4 4 あいう けこ 33 404.4 F 正規表現を使用してtibbleから条件に一致する行を抜き出す tidyverse(dplyr、stringr)パッケージに含まれるfilter関数とstr_detect関数を組み合わせて使う。以下の例では、簡潔な表示にするために表示の際にtibbleをデータフレームに変換している。 library(tidyverse) no - 1 5 mei - c("カナメ", "フレイア", "美雲", "マキナ", "レイナ") sei - c("バッカニア", "ヴィオン", "ギンヌメール", "中島", "プラウラー") fname - c("Kaname", "Freyja", "Mikumo", "Makina", "Reina") lname - c("Buccaneer", "Wion", "Guynemer", "Nakajima", "Prowler") seiyu - c("安野希世乃", "鈴木みのり", "小清水亜美", "西田望見", "東山奈央") tib - tibble(no, mei, sei, fname, lname, seiyu) print(as.data.frame(tib)) no mei sei fname lname seiyu 1 1 カナメ バッカニア Kaname Buccaneer 安野希世乃 2 2 フレイア ヴィオン Freyja Wion 鈴木みのり 3 3 美雲 ギンヌメール Mikumo Guynemer 小清水亜美 4 4 マキナ 中島 Makina Nakajima 西田望見 5 5 レイナ プラウラー Reina Prowler 東山奈央 tib % % filter(str_detect(mei, "ナ")) % % as.data.frame() no mei sei fname lname seiyu 1 1 カナメ バッカニア Kaname Buccaneer 安野希世乃 2 4 マキナ 中島 Makina Nakajima 西田望見 3 5 レイナ プラウラー Reina Prowler 東山奈央 tib % % filter(str_detect(mei, "ナ$")) % % as.data.frame() no mei sei fname lname seiyu 1 4 マキナ 中島 Makina Nakajima 西田望見 2 5 レイナ プラウラー Reina Prowler 東山奈央 tib % % filter(str_detect(mei, "ナ") str_detect(lname, "er$")) % % as.data.frame() no mei sei fname lname seiyu 1 1 カナメ バッカニア Kaname Buccaneer 安野希世乃 2 5 レイナ プラウラー Reina Prowler 東山奈央 特定の列の値でtibbleの行を並び替える arrange関数を使う。引数に、並び替えの基準にする列を指定する。複数同時に指定できる。デフォルトでは昇順に並び替えられるが、これを降順にする場合は列の指定にdesc関数を指定して指定すればよい。 以下の例では簡潔な表示にするため、表示の際にtibbleはデータフレームに変換している。 library(tidyverse) no - 1 5 name - c("ABC", "ABC", "abc", "123", "あいう") age - 25 21 tib - tibble(no, name, age) as.data.frame(tib) no name age 1 1 ABC 25 2 2 ABC 24 3 3 abc 23 4 4 123 22 5 5 あいう 21 tib % % arrange(age) % % as.data.frame() no name age 1 5 あいう 21 2 4 123 22 3 3 abc 23 4 2 ABC 24 5 1 ABC 25 tib % % arrange(name, age) % % as.data.frame() no name age 1 4 123 22 2 2 ABC 24 3 1 ABC 25 4 3 abc 23 5 5 あいう 21 tib % % arrange(name, desc(age)) % % as.data.frame() no name age 1 4 123 22 2 1 ABC 25 3 2 ABC 24 4 3 abc 23 5 5 あいう 21 tibbleの列名を変える rename関数を使う。引数には、変えたい列を「(新列名)=(旧列名)」と指定する。複数同時に指定できる。 以下の例では簡潔な表示にするため、表示の際にtibbleはデータフレームに変換している。 library(tidyverse) no - 1 3 name - c("ABC", "abc", "123") age - 23 21 tib - tibble(no, name, age) tib % % as.data.frame() no name age 1 1 ABC 23 2 2 abc 22 3 3 123 21 tib % % rename(seimei = name, toshi = age) % % as.data.frame() no seimei toshi 1 1 ABC 23 2 2 abc 22 3 3 123 21 tibbleを特定の列だけのtibbleに変換する select関数を使う。引数に抜き出したい列を指定すればよい。列の指定は列名でも番号(1~)でも指定できる。接頭辞として!を付けるとその列を除くという意味になる。!の指定には列番号にも使える。:(コロン)を使うことで、その列からその列までという範囲指定もできる。 以下の例では簡潔な表示にするため、表示の際にtibbleはデータフレームに変換している。 library(tidyverse) no - 1 5 mei - c("カナメ", "フレイア", "美雲", "マキナ", "レイナ") sei - c("バッカニア", "ヴィオン", "ギンヌメール", "中島", "プラウラー") seiyu - c("安野希世乃", "鈴木みのり", "小清水亜美", "西田望見", "東山奈央") tib - tibble(no, mei, sei, seiyu) tib % % select(mei, sei) % % as.data.frame() mei sei 1 カナメ バッカニア 2 フレイア ヴィオン 3 美雲 ギンヌメール 4 マキナ 中島 5 レイナ プラウラー tib % % select(!no) % % as.data.frame() mei sei seiyu 1 カナメ バッカニア 安野希世乃 2 フレイア ヴィオン 鈴木みのり 3 美雲 ギンヌメール 小清水亜美 4 マキナ 中島 西田望見 5 レイナ プラウラー 東山奈央 tib % % select(2, 3) % % as.data.frame() mei sei 1 カナメ バッカニア 2 フレイア ヴィオン 3 美雲 ギンヌメール 4 マキナ 中島 5 レイナ プラウラー tib % % select(!1) % % as.data.frame() mei sei seiyu 1 カナメ バッカニア 安野希世乃 2 フレイア ヴィオン 鈴木みのり 3 美雲 ギンヌメール 小清水亜美 4 マキナ 中島 西田望見 5 レイナ プラウラー 東山奈央 tib % % select(!(1 3)) % % as.data.frame() seiyu 1 安野希世乃 2 鈴木みのり 3 小清水亜美 4 西田望見 5 東山奈央 tibbleの列の順番を並び替える select関数を使う。引数には並び替えたい順に列名を指定する。すべての列を指定する必要はなく、特定の列だけを指定すると、その順にそれらの列だけからなるtibbleが作成される。引数にeverything関数を指定すると指定した列以外のすべて列という意味になるため、以下の3番目の例のとおり、特定の列だけを前(左側)なり後ろ(右側)なりに移動させたい場合に利用できる。 以下の例では簡潔な表示にするため、表示の際にtibbleはデータフレームに変換している。 library(tidyverse) mei - c("カナメ", "フレイア", "美雲", "マキナ", "レイナ") sei - c("バッカニア", "ヴィオン", "ギンヌメール", "中島", "プラウラー") no - 1 5 seiyu - c("安野希世乃", "鈴木みのり", "小清水亜美", "西田望見", "東山奈央") tib - tibble(no, mei, sei, seiyu) as.data.frame(tib) no mei sei seiyu 1 1 カナメ バッカニア 安野希世乃 2 2 フレイア ヴィオン 鈴木みのり 3 3 美雲 ギンヌメール 小清水亜美 4 4 マキナ 中島 西田望見 5 5 レイナ プラウラー 東山奈央 tib % % select(no, seiyu, mei, sei) % % as.data.frame() no seiyu mei sei 1 1 安野希世乃 カナメ バッカニア 2 2 鈴木みのり フレイア ヴィオン 3 3 小清水亜美 美雲 ギンヌメール 4 4 西田望見 マキナ 中島 5 5 東山奈央 レイナ プラウラー tib % % select(no, seiyu) % % as.data.frame() no seiyu 1 1 安野希世乃 2 2 鈴木みのり 3 3 小清水亜美 4 4 西田望見 5 5 東山奈央 tib % % select(no, seiyu, everything()) % % as.data.frame() no seiyu mei sei 1 1 安野希世乃 カナメ バッカニア 2 2 鈴木みのり フレイア ヴィオン 3 3 小清水亜美 美雲 ギンヌメール 4 4 西田望見 マキナ 中島 5 5 東山奈央 レイナ プラウラー tibbleの別の列の値を条件に使用して指定の列の値を変更する mutate関数とcase_when関数を組み合わせて使う。以下は、次のtibbleについてそのtibbleの別の列の値からそれぞれvc列に値を代入した例。 library(tidyverse) tib % % as.data.frame() title no chara vc 1 ウマ娘 30 ライスシャワー NA 2 ウマ娘 45 スーパークリーク NA 3 ウマ娘 58 メイショウドトウ NA 4 ライザのアトリエ2 1 ライザ NA 5 ライザのアトリエ2 2 フィー NA 6 推しの子 6 黒川あかね NA case_when関数には条件ごとにコンマで区切って「条件式 ~ 代入する値」と指定する。指定した順に評価されて代入される。条件に一致しないものは何もしない。 tib % % mutate(vc = case_when( + title == "ウマ娘" chara == "ライスシャワー" ~ "石見舞菜香", + chara == "メイショウドトウ" | chara == "フィー" ~ "和多田美咲" + )) % % as.data.frame() title no chara vc 1 ウマ娘 30 ライスシャワー 石見舞菜香 2 ウマ娘 45 スーパークリーク NA 3 ウマ娘 58 メイショウドトウ 和多田美咲 4 ライザのアトリエ2 1 ライザ NA 5 ライザのアトリエ2 2 フィー 和多田美咲 6 推しの子 6 黒川あかね NA mutate関数は存在する列を指定するとその列の値を書き換えるが、存在しない列名を指定するとその列を新たに作成する。 tib % % mutate(type = case_when( + str_detect(title, "^推し") ~ "アニメ", + )) % % as.data.frame() title no chara vc type 1 ウマ娘 30 ライスシャワー NA NA 2 ウマ娘 45 スーパークリーク NA NA 3 ウマ娘 58 メイショウドトウ NA NA 4 ライザのアトリエ2 1 ライザ NA NA 5 ライザのアトリエ2 2 フィー NA NA 6 推しの子 6 黒川あかね NA アニメ case_when関数で指定した条件は指定した順に評価されるため、最後の条件の条件式にTRUEを指定すればif文のelseに相当する動作をさせることができる。 tib % % mutate(type = case_when( + str_detect(title, "^推し") ~ "アニメ", + TRUE ~ "ゲーム" + )) % % as.data.frame() title no chara vc type 1 ウマ娘 30 ライスシャワー NA ゲーム 2 ウマ娘 45 スーパークリーク NA ゲーム 3 ウマ娘 58 メイショウドトウ NA ゲーム 4 ライザのアトリエ2 1 ライザ NA ゲーム 5 ライザのアトリエ2 2 フィー NA ゲーム 6 推しの子 6 黒川あかね NA アニメ 特定の列の値を基準にして2つのtibbleが結合できるか否か確認する tidyverse(dplyr)パッケージのsemi_join関数、anti_join関数を使う。基準とする列の指定にはjoin_by関数を使う。以下は、次の2つのtibbleを指定の列(以下の例ではvcとid)の値を基準にして結合できるか否か確認した例。簡潔な表示にするため、表示はすべてデータフレームで行っている。 chara % % as.data.frame() nama title no vc 1 ライスシャワー ウマ娘 30 miwami01 2 スーパークリーク ウマ娘 45 kyuki01 3 メイショウドトウ ウマ娘 58 mwatada01 4 ライザ ライザのアトリエ2 1 ynoguchi01 5 フィー ライザのアトリエ2 2 mwatada01 6 黒川あかね 推しの子 6 miwami01 seiyu % % as.data.frame() id name 1 miwami01 石見舞菜香 2 kyuki01 優木かな 3 mwatada01 和多田美咲 4 machico01 Machico semi_join関数は、右側に指定の列の値が一致する行がある左側の行を返す。inner_join関数と動作は似ているが、semi_join関数は、結合はせずに結合が可能な左側の行だけを返す。 chara % % inner_join(seiyu, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 5 黒川あかね 推しの子 6 miwami01 石見舞菜香 chara % % semi_join(seiyu, by = join_by(vc == id)) % % as.data.frame() nama title no vc 1 ライスシャワー ウマ娘 30 miwami01 2 スーパークリーク ウマ娘 45 kyuki01 3 メイショウドトウ ウマ娘 58 mwatada01 4 フィー ライザのアトリエ2 2 mwatada01 5 黒川あかね 推しの子 6 miwami01 anti_join関数は、右側に指定の列の値が一致する行がない左側の行を返す。left_join関数では無理矢理結合され列にNAが代入された行(以下の4行目)だけが返されるが、anti_join関数は結合はせずに左側の行だけを返す。 chara % % left_join(seiyu, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 ライザ ライザのアトリエ2 1 ynoguchi01 NA 5 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 6 黒川あかね 推しの子 6 miwami01 石見舞菜香 chara % % anti_join(seiyu, by = join_by(vc == id)) % % as.data.frame() nama title no vc 1 ライザ ライザのアトリエ2 1 ynoguchi01 tibbleから指定の列が重複する行を削除する distinct関数を使う。引数に指定した列から重複を取り除いてその列だけを返す。2つ以上同時に指定もできる。 tib % % as.data.frame() title seiyu 1 ウマ娘 大橋彩香 2 ウマ娘 大橋彩香 3 ウマ娘 石見舞菜香 4 ライザのアトリエ2 石見舞菜香 5 推しの子 石見舞菜香 6 ウマ娘 和多田美咲 tib % % distinct(title) % % as.data.frame() title 1 ウマ娘 2 ライザのアトリエ2 3 推しの子 tib % % distinct(seiyu) % % as.data.frame() seiyu 1 大橋彩香 2 石見舞菜香 3 和多田美咲 tib % % distinct(title, seiyu) % % as.data.frame() title seiyu 1 ウマ娘 大橋彩香 2 ウマ娘 石見舞菜香 3 ライザのアトリエ2 石見舞菜香 4 推しの子 石見舞菜香 5 ウマ娘 和多田美咲 tibbleから列の値が重複している行を抽出する group_by関数で列を指定してグループ化し、filter関数とn関数を組み合わせてグループの行数が2以上の行を表示させればよい。最後の例のとおり、二つ以上の列を同時に指定することもできる。 library(tidyverse) tib % % as.data.frame() name seiyu 1 ライスシャワー 石見舞菜香 2 ライスシャワー 石見舞菜香 3 メイショウドトウ 和多田美咲 4 メイショウドトウ (調査中) 5 サクラチヨノオー 野口瑠璃子 tib % % group_by(name) % % filter(n() 1) % % as.data.frame() name seiyu 1 ライスシャワー 石見舞菜香 2 ライスシャワー 石見舞菜香 3 メイショウドトウ 和多田美咲 4 メイショウドトウ (調査中) tib % % group_by(name, seiyu) % % filter(n() 1) % % as.data.frame() name seiyu 1 ライスシャワー 石見舞菜香 2 ライスシャワー 石見舞菜香 ある列の重複を除いた個数を調べる group_by関数で列を指定してグループ化し、summarize関数で集計する。集計時にn関数を指定すると、その個数を返す。以下はあらかじめ用意したtibbleで実行した例。 library(tidyverse) tib % % as.data.frame() nama title seiyu 1 ライスシャワー ウマ娘 岩見舞菜香 2 スーパークリーク ウマ娘 優木かな 3 メイショウドトウ ウマ娘 和多田美咲 4 フィー ライザのアトリエ2 和多田美咲 5 黒川あかね 推しの子 岩見舞菜香 tib % % group_by(title) % % summarize(nn = n()) % % as.data.frame() title nn 1 ウマ娘 3 2 ライザのアトリエ2 1 3 推しの子 1 tib % % group_by(seiyu) % % summarize(nn = n()) % % as.data.frame() seiyu nn 1 優木かな 1 2 和多田美咲 2 3 岩見舞菜香 2 グループ化には2つ以上の列を同時に指定することもできる。 tib2 - bind_rows(tib, slice(tib, c(1, 1, 3))) tib2 % % as.data.frame() nama title seiyu 1 ライスシャワー ウマ娘 岩見舞菜香 2 スーパークリーク ウマ娘 優木かな 3 メイショウドトウ ウマ娘 和多田美咲 4 フィー ライザのアトリエ2 和多田美咲 5 黒川あかね 推しの子 岩見舞菜香 6 ライスシャワー ウマ娘 岩見舞菜香 7 ライスシャワー ウマ娘 岩見舞菜香 8 メイショウドトウ ウマ娘 和多田美咲 tib2 % % group_by(title, seiyu) % % summarize(nn = n()) % % as.data.frame() `summarise()` has grouped output by title . You can override using the `.groups` argument. title seiyu nn 1 ウマ娘 優木かな 1 2 ウマ娘 和多田美咲 2 3 ウマ娘 岩見舞菜香 3 4 ライザのアトリエ2 和多田美咲 1 5 推しの子 岩見舞菜香 1 連結 行方向にtibbleを連結する bind_rows関数を使う。rbind関数と同様に列名を基準にして連結するため、列名の順は異なっていてもかまわない。なお、最後の例のとおり、rbind関数とは異なり列名が一致しない場合はNAを挿入して強制的に連結する。 library(tidyverse) tib1 - tibble( + no = c(40, 45), + name = c("ゴールドシチー", "スーパークリーク") + ) tib2 - tibble( + name = c("メイショウドトウ", "サクラチヨノオー"), + no = c(58, 69) + ) tib1 % % as.data.frame() no name 1 40 ゴールドシチー 2 45 スーパークリーク tib2 % % as.data.frame() name no 1 メイショウドトウ 58 2 サクラチヨノオー 69 bind_rows(tib1, tib2) % % as.data.frame() no name 1 40 ゴールドシチー 2 45 スーパークリーク 3 58 メイショウドトウ 4 69 サクラチヨノオー tib3 - tibble( + no = c(58, 69), + seiyu = c("和多田美咲", "野口瑠璃子") + ) tib3 % % as.data.frame() no seiyu 1 58 和多田美咲 2 69 野口瑠璃子 bind_rows(tib1, tib3) % % as.data.frame() no name seiyu 1 40 ゴールドシチー NA 2 45 スーパークリーク NA 3 58 NA 和多田美咲 4 69 NA 野口瑠璃子 列方向にtibbleを連結する bind_cols関数を使う。最後の例のとおり、行数が揃わない場合は連結できない。 library(tidyverse) no - c(40, 45, 58) name - c("ゴールドシチー", "スーパークリーク", "メイショウドトウ") seiyu - c("香坂さき", "優木かな", "和多田美咲") tib1 - tibble(no, name) tib2 - tibble(seiyu) tib1 % % as.data.frame() no name 1 40 ゴールドシチー 2 45 スーパークリーク 3 58 メイショウドトウ tib2 % % as.data.frame() seiyu 1 香坂さき 2 優木かな 3 和多田美咲 bind_cols(tib1, tib2) % % as.data.frame() no name seiyu 1 40 ゴールドシチー 香坂さき 2 45 スーパークリーク 優木かな 3 58 メイショウドトウ 和多田美咲 tib3 - tibble(seiyu = c("鈴木みのり", "石見舞菜香")) tib3 % % as.data.frame() seiyu 1 鈴木みのり 2 石見舞菜香 bind_cols(tib1, tib3) Error in `bind_cols()` ! Can t recycle `..1` (size 3) to match `..2` (size 2). Run `rlang last_trace()` to see where the error occurred. 結合 tibbleに別のtibbleで特定の列が一致する列を結合する tidyverse(dplyr)パッケージのinner_join関数を使う。Aを基準としてBを結合する場合、inner_join関数ではBに指定の列の値がAにない場合は、Aのその行は出力から落とされる。落とされずにとりあえずAの行すべてを出力したい場合は、left_join関数を使う。指定の列を基準としてAにもBにも含まれる行を出力する場合はfull_join関数を使う。なお、簡潔な表示にするため、表示する際にはデータフレームに変換している。 library(tidyverse) tbl - read_csv("meibo.csv", show_col_types = FALSE, progress = FALSE) tbl2 - tibble(no = c(1, 2, 4, 5), size = c("S", "M", "L", "LL")) as.data.frame(tbl) no sei mei age weight 1 1 あいう えお 11 101.1 2 2 かきく けこ 22 202.2 3 3 さしす せそ 22 303.3 4 4 あいう けこ 33 404.4 as.data.frame(tbl2) no size 1 1 S 2 2 M 3 4 L 4 5 LL as.data.frame(tbl % % inner_join(tbl2, by = "no")) no sei mei age weight size 1 1 あいう えお 11 101.1 S 2 2 かきく けこ 22 202.2 M 3 4 あいう けこ 33 404.4 L as.data.frame(tbl % % left_join(tbl2, by = "no")) no sei mei age weight size 1 1 あいう えお 11 101.1 S 2 2 かきく けこ 22 202.2 M 3 3 さしす せそ 22 303.3 NA 4 4 あいう けこ 33 404.4 L as.data.frame(tbl % % full_join(tbl2, by = "no")) no sei mei age weight size 1 1 あいう えお 11 101.1 S 2 2 かきく けこ 22 202.2 M 3 3 さしす せそ 22 303.3 NA 4 4 あいう けこ 33 404.4 L 5 5 NA NA NA NA LL 二つのtibbleを一つに結合(左外部結合)する 左外部結合(左側のすべての行を必ず出力する結合)するには、left_join関数を使う。以下はあらかじめ用意した二つのtibbleを左外部結合した例。左側(tib1)の4行目は右側(tib2)に結合相手が見つからないため、列にNAを挿入して4行目に出力されていることがわかる。 library(tidyverse) tib1 % % as.data.frame() nama title no vc 1 ライスシャワー ウマ娘 30 miwami01 2 スーパークリーク ウマ娘 45 kyuki01 3 メイショウドトウ ウマ娘 58 mwatada01 4 ライザ ライザのアトリエ2 1 ynoguchi01 5 フィー ライザのアトリエ2 2 mwatada01 6 黒川あかね 推しの子 6 miwami01 tib2 % % as.data.frame() id name 1 miwami01 岩見舞菜香 2 kyuki01 優木かな 3 mwatada01 和多田美咲 4 machico01 Machico tib1 % % left_join(tib2, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 岩見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 ライザ ライザのアトリエ2 1 ynoguchi01 NA 5 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 6 黒川あかね 推しの子 6 miwami01 岩見舞菜香 二つのtibbleを一つに結合(右外部結合)する 右外部結合(右側のすべての行を必ず出力する結合)するには、right_join関数を使う。以下はあらかじめ用意した二つのtibbleを右外部結合した例。右側(tib2)の4行目は左側(tib1)に結合相手が見つからないため、列にNAを挿入して6行目に出力されていることがわかる。 library(tidyverse) tib1 % % as.data.frame() nama title no vc 1 ライスシャワー ウマ娘 30 miwami01 2 スーパークリーク ウマ娘 45 kyuki01 3 メイショウドトウ ウマ娘 58 mwatada01 4 ライザ ライザのアトリエ2 1 ynoguchi01 5 フィー ライザのアトリエ2 2 mwatada01 6 黒川あかね 推しの子 6 miwami01 tib2 % % as.data.frame() id name 1 miwami01 岩見舞菜香 2 kyuki01 優木かな 3 mwatada01 和多田美咲 4 machico01 Machico tib1 % % right_join(tib2, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 岩見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 5 黒川あかね 推しの子 6 miwami01 岩見舞菜香 6 NA NA NA machico01 Machico 二つのtibbleを一つに結合(完全外部結合)する 完全外部結合(左右すべての行を必ず出力する結合)するには、full_join関数を使う。以下はあらかじめ用意した二つのtibbleを完全外部結合した例。 library(tidyverse) tib1 % % as.data.frame() nama title no vc 1 ライスシャワー ウマ娘 30 miwami01 2 スーパークリーク ウマ娘 45 kyuki01 3 メイショウドトウ ウマ娘 58 mwatada01 4 ライザ ライザのアトリエ2 1 ynoguchi01 5 フィー ライザのアトリエ2 2 mwatada01 6 黒川あかね 推しの子 6 miwami01 tib2 % % as.data.frame() id name 1 miwami01 岩見舞菜香 2 kyuki01 優木かな 3 mwatada01 和多田美咲 4 machico01 Machico tib1 % % full_join(tib2, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 岩見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 ライザ ライザのアトリエ2 1 ynoguchi01 NA 5 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 6 黒川あかね 推しの子 6 miwami01 岩見舞菜香 7 NA NA NA machico01 Machico 二つのtibbleを一つに結合(内部結合)する 内部結合(結合すべき行がない行は出力しない結合)するには、inner_join関数を使う。以下はあらかじめ用意した二つのtibbleを内部結合した例。結合相手がない左側(tib1)の4行目と右側(tib2)の4行目は出力されていないことがわかる。 library(tidyverse) tib1 % % as.data.frame() nama title no vc 1 ライスシャワー ウマ娘 30 miwami01 2 スーパークリーク ウマ娘 45 kyuki01 3 メイショウドトウ ウマ娘 58 mwatada01 4 ライザ ライザのアトリエ2 1 ynoguchi01 5 フィー ライザのアトリエ2 2 mwatada01 6 黒川あかね 推しの子 6 miwami01 tib2 % % as.data.frame() id name 1 miwami01 岩見舞菜香 2 kyuki01 優木かな 3 mwatada01 和多田美咲 4 machico01 Machico tib1 % % full_join(tib2, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 岩見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 ライザ ライザのアトリエ2 1 ynoguchi01 NA 5 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 6 黒川あかね 推しの子 6 miwami01 岩見舞菜香 7 NA NA NA machico01 Machico その他 tibbleの行に連番付け、順位付けを行う 連番付けにはrow_number関数、順位付けにはmin_rank関数かdense_rank関数を使う。 row_number関数は行に対して1から始まる連番を作成する。min_rank関数とdense_rank関数は順位付け関数であるが動作が異なり、min_rank関数は指定の列の値に同じ値があった場合は同位としてその次の順位を飛ばすが、dense_rank関数は同じ値があった場合は同位として次の順位は飛ばさない。最後の例のとおり、row_number関数は与えられたtibbleについて1行目から連番を割り当てるが、min_rank関数とdense_rank関数は指定された列の値に基づいて順位付けを行う。順位付けのデフォルトは昇順のため、これを降順にしたい場合は列を指定する際にdesc関数を使用する。 library(tidyverse) tib - tibble(n = c(20, 20, 30, 10, 40)) tib % % arrange(n) % % mutate(row_number(), min_rank(n), dense_rank(n)) % % as.data.frame() n row_number() min_rank(n) dense_rank(n) 1 10 1 1 1 2 20 2 2 2 3 20 3 2 2 4 30 4 4 3 5 40 5 5 4 tib % % arrange(n) % % mutate(row_number(), min_rank(desc(n)), dense_rank(desc(n))) % % as.data.frame() n row_number() min_rank(desc(n)) dense_rank(desc(n)) 1 10 1 5 4 2 20 2 3 3 3 20 3 3 3 4 30 4 2 2 5 40 5 1 1 tib % % mutate(row_number(), min_rank(desc(n)), dense_rank(desc(n))) % % as.data.frame() n row_number() min_rank(desc(n)) dense_rank(desc(n)) 1 20 1 3 3 2 20 2 3 3 3 30 3 2 2 4 10 4 5 4 5 40 5 1 1 テキストファイルの読み込み テキストファイルを高速で読み込む 形式はともかく、とにかくテキストファイルを高速で読み込みたい場合は、readrパッケージのread_lines関数を使う。以下は、最初にファイルのサイズが80,000,000バイトのテキストファイルを作成し、それをRに標準で搭載されているscan関数とreadrパッケージのread_lines関数で3回ずつ読み込み、それに要した時間を計測した例。 作成したファイル(temp.txt)はWindowsのUTF-8環境で作成しており、1行78文字で改行コードはCR+LF、それが100万行あるテキストファイルのため、ファイルサイズは(78+2)*1,000,000=80,000,000バイトである。 lns - sprintf("%078.0f", floor(runif(10 ^ 6, 0, 10 ^ 78))) head(lns, 3) [1] "214418413117527971264060246646220804826684668888086204426268668846486202246440" [2] "923248178558424118646448222222446482266040066668404462646882848600280046042684" [3] "022663331590592860430486024422482606408624828266462802622284262068424466884282" cat(lns, file = "temp.txt", sep = "\n") system.time(lns1 - scan(file = "temp.txt", what = character(), sep = "\n", quiet = TRUE)) ユーザ システム 経過 4.74 0.11 4.95 system.time(lns1 - scan(file = "temp.txt", what = character(), sep = "\n", quiet = TRUE)) ユーザ システム 経過 4.64 0.16 4.81 system.time(lns1 - scan(file = "temp.txt", what = character(), sep = "\n", quiet = TRUE)) ユーザ システム 経過 4.56 0.14 4.70 class(lns1) [1] "character" length(lns1) [1] 1000000 head(lns1, 3) [1] "214418413117527971264060246646220804826684668888086204426268668846486202246440" [2] "923248178558424118646448222222446482266040066668404462646882848600280046042684" [3] "022663331590592860430486024422482606408624828266462802622284262068424466884282" library(readr) system.time(lns2 - read_lines(file = "temp.txt", progress = FALSE)) ユーザ システム 経過 1.07 0.24 0.71 system.time(lns2 - read_lines(file = "temp.txt", progress = FALSE)) ユーザ システム 経過 0.88 0.17 0.53 system.time(lns2 - read_lines(file = "temp.txt", progress = FALSE)) ユーザ システム 経過 1.04 0.06 0.53 class(lns2) [1] "character" length(lns2) [1] 1000000 head(lns2, 3) [1] "214418413117527971264060246646220804826684668888086204426268668846486202246440" [2] "923248178558424118646448222222446482266040066668404462646882848600280046042684" [3] "022663331590592860430486024422482606408624828266462802622284262068424466884282" 単純な比較だがread_lines関数のほうが10倍弱速いことがわかる。read_lines関数で読み込んだものは、一行一要素の文字列型ベクトルになる。 巨大なCSVファイルを高速で読み込む tribbleパッケージのread_csv関数を使用する。まずは巨大なCSVファイルを作成する。PowerShellのコマンドラインで以下を実行する。 PS $s = "1,abc,2.3`r`n2,あい,4.5`r`n3,えおyz,NA`r`n" PS [Text.Encoding] GetEncoding("utf-8").GetByteCount($s) 40 PS $n = 1024 * 1024 * 4 PS $file = (gl).Path + "\temp_utf8nb.csv" PS [IO.File] WriteAllText($file, $s * $n) PS Get-ChildItem .\temp_utf8nb.csv ディレクトリ ○○○ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2023/08/20 22 27 167772160 temp_utf8nb.csv PS Get-Content .\temp_utf8nb.csv -TotalCount 5 -Encoding utf8 1,abc,2.3 2,あい,4.5 3,えおyz,NA 1,abc,2.3 2,あい,4.5 変数$sには大きさが40バイトの文字列(改行コード含む)が格納され、それを1024倍して40KiB(キビバイト)、さらに1024倍して40MiB(メビバイト)、最後に4倍して160MiBにしてCSVファイル(temp_utf8nb.csv)に出力している。これの160MiBのCSVファイルを使用する。なお、FileクラスのWriteAllTextメソッドを使用して文字コードをUTF-8(BOM無し)で出力していることに注意。改行コードは$sの中身のとおりにCR+LF。 Rで標準で使うことができるread.table関数を使ってみる。 system.time(dtf - read.table("temp_utf8nb.csv", sep = ",", fileEncoding = "UTF-8")) ユーザ システム 経過 7.50 0.16 7.84 system.time(dtf - read.table("temp_utf8nb.csv", sep = ",", fileEncoding = "UTF-8")) ユーザ システム 経過 7.10 0.14 7.88 system.time(dtf - read.table("temp_utf8nb.csv", sep = ",", fileEncoding = "UTF-8")) ユーザ システム 経過 7.33 0.15 7.83 nrow(dtf) [1] 12582912 head(dtf, 5) V1 V2 V3 1 1 abc 2.3 2 2 あい 4.5 3 3 えおyz NA 4 1 abc 2.3 5 2 あい 4.5 キャッシュの影響を考慮して3回試している。この環境では読み込みに7.8秒程度要する。次にreadrパッケージのread_csv関数を使ってみる。 library(readr) system.time(tbl - read_csv("temp_utf8nb.csv", col_names = FALSE, progress = FALSE, show_col_types = FALSE)) ユーザ システム 経過 7.70 0.12 1.34 system.time(tbl - read_csv("temp_utf8nb.csv", col_names = FALSE, progress = FALSE, show_col_types = FALSE)) ユーザ システム 経過 7.42 0.19 1.31 system.time(tbl - read_csv("temp_utf8nb.csv", col_names = FALSE, progress = FALSE, show_col_types = FALSE)) ユーザ システム 経過 7.56 0.22 1.36 nrow(tbl) [1] 12582912 head(as.data.frame(tbl), 5) X1 X2 X3 1 1 abc 2.3 2 2 あい 4.5 3 3 えおyz NA 4 1 abc 2.3 5 2 あい 4.5 キャッシュの影響を考慮して3回試している。この環境では読み込みに1.4秒程度要する。read_csvはread.tableよりもファイルの読み込みが5倍以上早いことがわかる。なお、read_delim関数でも同じくらい早ことがわかる。 system.time(tbl - read_delim("temp_utf8nb.csv", col_names = FALSE, delim = ",", progress = FALSE, show_col_types = FALSE)) ユーザ システム 経過 7.14 0.08 1.25 原因は不明だが、このテスト環境(Windows版4.2.2)では、read.csv関数はfileEncodingオプションが指定どおり動作しない。そのため、上の例では代わりにread.table関数を使用している。 read_lines関数で様々な文字コードのテキストファイルを読み込む localeオプションを使用する。はじめに、この動作確認のためのテキストファイルをPowerShellで作成する。それぞれ文字コードがシフトJISとUTF-8(BOM無し)のCSVファイルを作成している。 PS $lines = "1,セナディア,鈴木みのり", "2,イレイナ,本渡楓" PS $odir = (gl).Path PS $lines | Out-File -Encoding default ($odir + "\sjis.csv") PS [IO.File] WriteAllLines(($odir + "\utf8nb.csv"), $lines) PS Get-Content sjis.csv 1,セナディア,鈴木みのり 2,イレイナ,本渡楓 PS Get-Content utf8nb.csv -Encoding utf8 1,セナディア,鈴木みのり 2,イレイナ,本渡楓 read_lines関数を使用する際に、localeオプションに文字コードを指定すればよい。以下の例のとおり、デフォルトではUTF-8で読み込もうとするため、UTF-8であれば明示的に指定しなくてもかまわない。 library(tidyverse) read_lines("sjis.csv", progress = FALSE) [1] "1, 83 Z 83 i 83 f 83 B 83 A, 97 e9 96 U+0602 U+0742 U+0302 e8 " "2, 83 C 83 8c 83 C 83 i, 96 { 93 n 95 96 " read_lines("sjis.csv", progress = FALSE, locale = locale(encoding = "SJIS")) [1] "1,セナディア,鈴木みのり" "2,イレイナ,本渡楓" read_lines("utf8nb.csv", progress = FALSE) [1] "1,セナディア,鈴木みのり" "2,イレイナ,本渡楓" read_lines("utf8nb.csv", progress = FALSE, locale = locale(encoding = "UTF-8")) [1] "1,セナディア,鈴木みのり" "2,イレイナ,本渡楓" テキストファイルへの書き込み TSV形式でテキストファイルに高速で書き込む readrパッケージのwrite_tsv関数を使う。以下は500万行からなるデータフレームをwrite.tableとwrite_tsv関数でそれぞれTSV形式のテキストファイルに3回ずつ出力し、それに要した時間を計測した例。write_tsv関数のほうが10倍以上速いことがわかる。 library(readr) n - 5 * 10 ^ 6 no - 1 n s - c("大橋彩香", "石見舞菜香", "優木かな", "和多田美咲") name - sample(s, n, replace = TRUE) shoe_size - round(rnorm(n, 23.5, 1), 1) dtf - data.frame(no, name, shoe_size) head(dtf, 6) no name shoe_size 1 1 石見舞菜香 24.3 2 2 石見舞菜香 23.2 3 3 和多田美咲 23.6 4 4 大橋彩香 24.8 5 5 石見舞菜香 25.1 6 6 優木かな 24.7 system.time( + write.table(dtf, "temp.tsv", sep = "\t", quote = FALSE, row.names = FALSE) + ) ユーザ システム 経過 9.86 0.06 12.78 system.time( + write.table(dtf, "temp.tsv", sep = "\t", quote = FALSE, row.names = FALSE) + ) ユーザ システム 経過 9.43 0.14 12.94 system.time( + write.table(dtf, "temp.tsv", sep = "\t", quote = FALSE, row.names = FALSE) + ) ユーザ システム 経過 9.55 0.09 13.06 system.time(write_tsv(dtf, "temp.tsv", eol = "\r\n", progress = FALSE)) ユーザ システム 経過 0.60 0.05 0.16 system.time(write_tsv(dtf, "temp.tsv", eol = "\r\n", progress = FALSE)) ユーザ システム 経過 0.62 0.10 0.16 system.time(write_tsv(dtf, "temp.tsv", eol = "\r\n", progress = FALSE)) ユーザ システム 経過 0.92 0.07 0.84 その他 read_delim関数を使うと画面表示が乱れる(カーソルが飛ぶ) readrパッケージのread_delim関数は、デフォルトでは、読み込み時に実際は表示されないものの経過を画面表示しようとするため、その影響で、使用後は画面表示が乱れ、カーソルがおかしなところに飛んでしまう。この画面表示の乱れが起きないようにするには、progressオプションにFALSEを指定する。 library(readr) tbl - read_delim("c /windows/win.ini", delim = "\n", col_names = FALSE) ←カーソルがコマンドラインのプロンプトから離れた箇所に表示され、表示が乱れる。 一度Rを終了し、再起動して次のコマンドを実行する。 library(readr) tbl - read_delim("c /windows/win.ini", delim = "\n", col_names = FALSE, progress = FALSE) ←カーソルがコマンドラインのプロンプトのすぐ右側に表示され、表示が乱れない。 以下を.RProfileに記述しておけば、R起動時に自動的に読み込み、デフォルトでそのような設定になる。 options( readr.show_progress = FALSE ) R起動後でも、以下のコマンドを実行すれば同じようにデフォルトでそのような設定になる。 options(readr.show_progress = FALSE) write_delim関数を使うと画面表示が乱れる(カーソルが飛ぶ) readrパッケージのwrite_delim関数は、デフォルトでは出力の経過を画面表示しようとするため、その影響で、使用後は画面表示が乱れてカーソルがおかしなところに飛んでしまう。この画面表示の乱れが起きないようにするには、progressオプションにFALSEを指定する。 library(tidyverse) tbl - tibble(no = 1 3, name = c("ABC", "abc", "123")) write_delim(tbl, "temp.csv", delim = ",") ←カーソルがコマンドラインのプロンプトから離れた箇所に表示され、表示が乱れる。 一度Rを終了し、再起動して次のコマンドを実行する。 library(tidyverse) tbl - tibble(no = 1 3, name = c("ABC", "abc", "123")) write_delim(tbl, "temp.csv", delim = ",", progress = FALSE) ←カーソルがコマンドラインのプロンプトのすぐ右側に表示され、表示が乱れない。 以下を.RProfileに記述しておけば、R起動時に自動的に読み込み、デフォルトでそのような設定になる。 options( readr.show_progress = FALSE ) R起動後でも、以下のコマンドを実行すれば同じようにデフォルトでそのような設定になる。 options(readr.show_progress = FALSE) なお、これらはwrite_csv関数などでも同様である。 read_delim関数使用時の画面表示を抑制する readrパッケージのread_delim関数は、デフォルトでは、読み込み時にいろいろ情報を表示する。これを一切表示させないようにするには、show_col_typesにFALSEを指定する。読み込みの経過を表示させないようにするため、あらかじめprogressにもFALSEを指定している。 library(readr) tbl - read_delim("c /windows/win.ini", delim = "\n", col_names = FALSE, progress = FALSE) Rows 7 Columns 1 ── Column specification ───────────────────────────────── Delimiter "\001" chr (1) X1 ℹ Use `spec()` to retrieve the full column specification for this data. ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message. tbl - read_delim("c /windows/win.ini", delim = "\n", col_names = FALSE, progress = FALSE, show_col_types = FALSE) 以下を「C \Users\○○○\Documents\.RProfile」(○○○はアカウント名)に記述しておけば、R起動時に自動的に読み込み、デフォルトでそのような設定になる。 options( readr.show_progress = FALSE, readr.show_col_types = FALSE ) R起動後でも、以下のコマンドを実行すれば同じようにデフォルトでそのような設定になる。 options(readr.show_progress = FALSE, readr.show_col_types = FALSE) 試してみる。 library(readr) tbl - read_delim("c /windows/win.ini", delim = "\n", col_names = FALSE) 指定の列の値を基準にして2つのtibbleを結合する tidyverse(dplyr)パッケージのleft_join関数、right_join関数、inner_join関数、full_join関数を使う。基準とする列の指定にはjoin_by関数を使う。以下は、次の2つのtibbleを指定の列(以下の例ではvcとid)の値を基準にして結合した例。簡潔な表示にするため、表示はすべてデータフレームで行っている。 library(tidyverse) chara % % as.data.frame() nama title no vc 1 ライスシャワー ウマ娘 30 miwami01 2 スーパークリーク ウマ娘 45 kyuki01 3 メイショウドトウ ウマ娘 58 mwatada01 4 ライザ ライザのアトリエ2 1 ynoguchi01 5 フィー ライザのアトリエ2 2 mwatada01 6 黒川あかね 推しの子 6 miwami01 seiyu % % as.data.frame() id name 1 miwami01 石見舞菜香 2 kyuki01 優木かな 3 mwatada01 和多田美咲 4 machico01 Machico left_join関数は、左側のtibbleの行はすべて採用され、右側のtibbleは指定の列が一致した行だけが結合される。一致の無かった左側の行の連結により作成される列にはNAが挿入される(以下の4行目)。 chara % % left_join(seiyu, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 ライザ ライザのアトリエ2 1 ynoguchi01 NA 5 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 6 黒川あかね 推しの子 6 miwami01 石見舞菜香 right_join関数は、右側のtibbleの列はすべて採用され、左側のtibbleは指定の列が一致した行だけが結合される。一致の無かった右側の行の連結により作成される列にはNAが挿入される(以下の6行目)。 chara % % right_join(seiyu, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 5 黒川あかね 推しの子 6 miwami01 石見舞菜香 6 NA NA NA machico01 Machico inner_join関数は、指定の列の値が一致した組み合わせのみがすべて結合される。 chara % % inner_join(seiyu, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 5 黒川あかね 推しの子 6 miwami01 石見舞菜香 full_join関数は、左側のtibbleの行はすべて採用され、右側のtibbleの行もすべて採用される。指定の列が一致したものは一致したもの同士で結合し、結合できない行の空いた列にはNAが挿入されて結合される(以下の4行目と7行目)。 chara % % full_join(seiyu, by = join_by(vc == id)) % % as.data.frame() nama title no vc name 1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香 2 スーパークリーク ウマ娘 45 kyuki01 優木かな 3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲 4 ライザ ライザのアトリエ2 1 ynoguchi01 NA 5 フィー ライザのアトリエ2 2 mwatada01 和多田美咲 6 黒川あかね 推しの子 6 miwami01 石見舞菜香 7 NA NA NA machico01 Machico
https://w.atwiki.jp/carstereo/pages/115.html
Some People Laugh Some People Cry Some People Live Some People Die And Some People Run Right into the Fire And Some People Hide Their Every Desire But We Are The Lovers If You Don’t Believe Me Then Just Look Into My Eyes Cause The Heart Never Lies Some People Fight Some People Fall Others Pretend They Don’t Care At All If You Wanna Fight I’ll Stand Right Beside You The Day That You Fall I’ll Be Right Behind You To Pick Up The Pieces If You Don’t Believe Me Just Look Into My Eyes Cause The Heart Never Lies Woahhh x 2 Another Year Over And Were Still Together It’s Not Always Easy But I’m here Forever Yeah We Are The Lovers I Know You Believe Me When You Look Into My Eyes Cause The Heart Never Lies Cause The Heart Never Lies Cause The Heart Never Lies
https://w.atwiki.jp/ddrdp/pages/2084.html
MAX.(period)(激) 曲名 アーティスト フォルダ 難易度 BPM NOTES/FA(SA) その他 MAX.(period) 2MB 2014 激16 150-600 510 / 3 Replicant D-ignition STREAM VOLTAGE AIR FREEZE CHAOS 136 101 10 7 40 楽譜面(11) / 踊譜面(13) /激譜面(16) / 鬼譜面(18) 属性 発狂(カニ歩き、地団駄)、ソフラン(減速、加速)、停止、ラス殺し、体力 譜面 http //www.ddr.sh/steps/basic/m/max_period/8m_max_period_a_d.html 譜面動画 http //www.nicovideo.jp/watch/sm15937326 http //www.nicovideo.jp/watch/sm15937326 プレイ動画 http //www.nicovideo.jp/watch/sm25947213 http //www.nicovideo.jp/watch/sm25947213 (x1.5, NOTE, REVERSE, RISKY) 解説 BPM推移 : 300-(停止)-180-300-600-150 2015/03/05から開催されたReplicant D-ignition、ENCORE EXTRA STAGE。EGOISM 440のオーブ獲得に成功すると演出後激譜面に強制進出され、強制オプションとしてHS1.5、REVERSEが付く。初出は家庭用EXT 2015/03/26からNEXT PHASEにてEXTRAでも選曲可能となった 名前 コメント コメント(私的なことや感想はこちら) 演出上の仕様でx1.5REVERSE強制だがSPでも見えないのにDPだと余計やばいな、暗記必須か -- 名無しさん (2015-03-08 09 19 13) え、、ついに -- 名無しさん (2015-03-13 23 52 30) 名前 コメント