R(データフレーム)

2022年8月 3日 (水)

[R]データフレームを並び替える

[ ]演算子とorder関数を組み合わせて使う。2つ以上の値で並び替える場合は、order関数にその並び替える順番に列を指定する。order関数による並び替えはデフォルトで昇順に並び替えられるが、これを降順にするのであればorder関数のdecreasingオプションにTRUEを与える。

> n <- c(3, 3, 1, 2)
> s1 <- c("ABC", "123", "123", "abc")
> s2 <- c("え", "う", "い", "あ")
> dtf <- data.frame(n, s1, s2)
> print(dtf)
n s1 s2
1 3 ABC え
2 3 123 う
3 1 123 い
4 2 abc あ
> print(dtf[order(dtf$n), ])
n s1 s2
3 1 123 い
4 2 abc あ
1 3 ABC え
2 3 123 う
> print(dtf[order(dtf$n, dtf$s2), ])
n s1 s2
3 1 123 い
4 2 abc あ
2 3 123 う
1 3 ABC え
> print(dtf[order(dtf$n, decreasing = TRUE), ])
n s1 s2
1 3 ABC え
2 3 123 う
4 2 abc あ
3 1 123 い

2022年8月 2日 (火)

[R]データフレームを作成する

data.frame関数を使う。

> no <- 1:3
> n <- 1:3
> s <- c("田中", "山本", "林")
> dt <- as.Date(c("2001-01-01", "2002-08-31", "1999-12-29"))
> dtf <- data.frame(n, s, dt)
> print(dtf)
n s dt
1 1 田中 2001-01-01
2 2 山本 2002-08-31
3 3 林 1999-12-29

2017年5月23日 (火)

[R]指定の列の値でデータフレームをソートする

order関数を使う。order関数は並び替えられたインデックスを返すので、並び替えられたデータフレームを作成するには、元のデータフレームにその戻り値のインデックスを指定すればよい。

以下は、3行2列のデータフレームを、2列目の数値でソートした例。order関数はデフォルトでは昇順にソートする。これを降順にしたいのであれば、decreasingオプションをTRUEにする必要がある。

> dtf <- data.frame(V1 = c("A", "B", "C"), V2 = c(1, 3, 2))
> dtf
  V1 V2
1  A  1
2  B  3
3  C  2
> order(dtf$V2)
[1] 1 3 2
> order(dtf$V2, decreasing = TRUE)
[1] 2 3 1
> dtf[order(dtf$V2), ]
  V1 V2
1  A  1
3  C  2
2  B  3
無料ブログはココログ