Help us understand the problem. What is going on with this article?

Rでデータフレームからデータを抽出(検索)

都道府県    国語A 国語B 算数A 算数B
北海道   71.8    52.9    75.8    55.2
青森県   76.6    60.5    81.3    60.8
岩手県   73.7    58.3    78.9    58.7
宮城県   74.2    54.3    77.3    56.8
秋田県   77.4    67.3    85.1    66.2
山形県   74.3    56.7    77.8    57.7
福島県   73.3    57.0    78.7    57.8
茨城県   76.9    57.4    79.7    58.6
栃木県   71.9    54.5    77.7    56.8
群馬県   73.6    55.5    78.0    57.8
埼玉県   72.5    55.5    76.9    57.8
千葉県   75.8    55.5    78.2    58.8
東京都   75.5    57.2    79.4    61.2

というCSVファイルを読み込んで、answer というオブジェクトにセットされているとき。
(一番上の 都道府県 国語A 国語B 算数A 算数B は、Header として扱われている)

行番号と列番号を指定して抽出

> # 1行目、3列目のデータ(52.9)を抽出
> answer[1,3]
[1] 52.9

行番号で抽出

行番号が一致するデータを抽出

> # 3行目を抽出
> answer[3,]
  都道府県 国語A 国語B 算数A 算数B
3   岩手県  73.7  58.3  78.9  58.7

行番号が一致する範囲のデータを抽出

> # 3~5行目を抽出
> answer[3:5,]
  都道府県 国語A 国語B 算数A 算数B
3   岩手県  73.7  58.3  78.9  58.7
4   宮城県  74.2  54.3  77.3  56.8
5   秋田県  77.4  67.3  85.1  66.2

列番号で抽出

列番号が一致するデータを抽出

> #3列目を抽出
> answer[,3]
 [1] 52.9 60.5 58.3 54.3 67.3 56.7 57.0 57.4 54.5 55.5 55.5 55.5 57.2

列番号が一致する範囲のデータを抽出

> #3列目~4列目を抽出
> answer[,3:4]
   国語B 算数A
1   52.9  75.8
2   60.5  81.3
3   58.3  78.9
4   54.3  77.3
5   67.3  85.1
6   56.7  77.8
7   57.0  78.7
8   57.4  79.7
9   54.5  77.7
10  55.5  78.0
11  55.5  76.9
12  55.5  78.2
13  57.2  79.4

Headerをキーに、比較演算子がマッチするデータを抽出

文字列一致

> # Header[都道府県]が岩手県の行を抽出
> answer[answer$都道府県=="岩手県",]
  都道府県 国語A 国語B 算数A 算数B
3   岩手県  73.7  58.3  78.9  58.7

数値の比較

> # Header[算数B]の値が60以上の行を抽出

> answer[answer$算数B>60, ]
   都道府県 国語A 国語B 算数A 算数B
2    青森県  76.6  60.5  81.3  60.8
5    秋田県  77.4  67.3  85.1  66.2
13   東京都  75.5  57.2  79.4  61.2
  • データフレームの変数とHeaderの区切りは$記号を使う
  • [都道府県]や[数学B]はHeaderなのでクオートの必要はない
  • 文字列比較の場合は、比較演算子として == を使う
  • 数値比較の場合は、比較演算子として < や > を使う
  • "岩手県"は文字列なので、ダブルクオートでくくる
  • 行を抽出するので最後に[,]が必要

複数の条件によるマッチ

比較演算を[ & ]記号で繋げる

#国語Aが75以上で、算数Bが55以下
> answer[ answer$国語A > 75 & answer$算数B < 55, ]

ソートして表示する

> # [算数A]の列の値で昇順にソートする
> answer[ order( answer$算数A ), ]
   都道府県 国語A 国語B 算数A 算数B
1    北海道  71.8  52.9  75.8  55.2
11   埼玉県  72.5  55.5  76.9  57.8
4    宮城県  74.2  54.3  77.3  56.8
9    栃木県  71.9  54.5  77.7  56.8
6    山形県  74.3  56.7  77.8  57.7
10   群馬県  73.6  55.5  78.0  57.8
12   千葉県  75.8  55.5  78.2  58.8
7    福島県  73.3  57.0  78.7  57.8
3    岩手県  73.7  58.3  78.9  58.7
13   東京都  75.5  57.2  79.4  61.2
8    茨城県  76.9  57.4  79.7  58.6
2    青森県  76.6  60.5  81.3  60.8
5    秋田県  77.4  67.3  85.1  66.2

> # [算数A]の列の値で降順にソートする
> answer[ order( -answer$算数A ), ]
   都道府県 国語A 国語B 算数A 算数B
5    秋田県  77.4  67.3  85.1  66.2
2    青森県  76.6  60.5  81.3  60.8
8    茨城県  76.9  57.4  79.7  58.6
13   東京都  75.5  57.2  79.4  61.2
3    岩手県  73.7  58.3  78.9  58.7
7    福島県  73.3  57.0  78.7  57.8
12   千葉県  75.8  55.5  78.2  58.8
10   群馬県  73.6  55.5  78.0  57.8
6    山形県  74.3  56.7  77.8  57.7
9    栃木県  71.9  54.5  77.7  56.8
4    宮城県  74.2  54.3  77.3  56.8
11   埼玉県  72.5  55.5  76.9  57.8
1    北海道  71.8  52.9  75.8  55.2
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away