質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

2回答

943閲覧

データフレームをorder()を用いて並び変える際の、要素の参照のさせかたについて

pekapekatail

総合スコア32

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2019/02/10 12:26

Rを独学で学んでいる素人です。データフレームを特定の列について昇順に並び替えて表示させる際、要素の参照のさせかたで疑問があります。

例えば↓のような生徒の名簿をつくる状況です。

name <- c("たろう", "たけし", "はなこ") age <- c("10", "12", "11") students_df <- data.frame(name, age) #年齢順に並び替えたい by_age <- order(students_df$age) students_df[by_age,]

以下のような表が出力されます。

nameage
1たろう10
2はなこ11
3たけし12

ここで、最後の行のstudents_df[]は、どうしてby_ageがageのことを指していると認識できるのでしょうか。
by_ageは1 3 2 という(たろう→はなこ→たけしの順で若いね、という意味の)数を格納していますが、これをstudents_dfにいきなり渡したところで、これがage行の順番を表すものだよということは自明ではないように思われます。
order()のドキュメントを見てもわからずここで質問させて頂きました。
ご回答頂けたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こんにちは。

最後の行のstudents_df[]は、どうしてby_ageがageのことを指していると認識できるのでしょうか。

students_df[]by_ageの順番によって行が並び替えられているので、ageを認識しているわけではありません。

students_df[by_age, ]students_df[c(1,3,2), ]と同じで、**「students_dfを1列目→3列目→2列目の順番で出力する」**という意味になります。

ご不明な点がございましたらご質問をよろしくお願いいたします。

投稿2019/02/11 11:26

t-taro

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベクトルageを並び替えて作ったc(1,3,2)が、とりもなおさずstudent_dfのage列の順番と同じだから。元が同じなんだから当たり前ですね。

投稿2019/02/10 18:54

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問