R言語(データフレーム)

R言語続きで、データフレームです。
データフレームは、いわゆるRDBのテーブルみたいなものですね。Excelの表という覚え方でもいいかもしれません。

> a = c("あなご","いくら","うに")
> b = c(200,300,400)
> a
[1] "あなご" "いくら" "うに"
> b
[1] 200 300 400
> dt = data.frame (a,b)
> dt
       a   b
1 あなご 200
2 いくら 300
3   うに 400
>

列アクセスは配列のように番号を指定します。

> dt[1]
       a
1 あなご
2 いくら
3   うに
> dt[2]
    b
1 200
2 300
3 400
>

配列と似てるからといって、勝手に次元を増やしてアクセスできません。

> dt[1][1]
       a
1 あなご
2 いくら
3   うに
>

列をベクトルで抽出するには、,(カンマ)を指定します。

> f1 = dt[,1]
> f2 = dt[,2]
> f1
[1] あなご いくら うに
Levels: あなご いくら うに
> f2
[1] 200 300 400
>

行を取り出すには、subset関数を使います。

> dt
       a   b
1 あなご 200
2 いくら 300
3   うに 400
> subset(dt,b == 300)
       a   b
2 いくら 300
>
> subset(dt,b < 350)
       a   b
1 あなご 200
2 いくら 300
>

SQLのwhere節のようですね。

> subset(dt,b >= 300,select=a)
       a
2 いくら
3   うに
>

列を増やしてみます。

> dt
       a   b
1 あなご 200
2 いくら 300
3   うに 400
> name = dt[,1]
> price = dt[,2]
> qty = c(5,10,15)
> dt = data.frame(name,price,qty)
> dt
    name price qty
1 あなご   200   5
2 いくら   300  10
3   うに   400  15
>

priceが300以上のnameとqtyを抽出。

> subset(dt,price>=300,select=c(name,qty))
    name qty
2 いくら  10
3   うに  15
>

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA