« 2021年11月 | トップページ | 2022年3月 »

2022年2月25日 (金)

[R]正規表現を使用して文字列の置き換えを行う

gsub関数を使う。ただ文字列を置換するのではなく、パターンに含まれる文字列を使用して置き換えたい場合は、キャプチャによるグループ化を利用する。パターン内で( )(括弧)に挟まれた範囲はグループ化(キャプチャという)される。このグループには、キャプチャされた順番に1から始まる連番が付けられ、置換後の文字列で\1, \2, …と挿入することで、置換後の文字列に挿入することができる(実際にはエスケープシーケンスを使用する必要があるので、\\1, \\2, …とする)。

以下は、gsub関数を使用して、7桁の数字(○○○○○○○)を郵便番号の表記(○○○-○○○○)に置き換えた例。

> s <- c("1234567", "9876543", "3210")
> gsub("([0-9]{3})([0-9]{4})", "\\1-\\2", s)
[1] "123-4567" "987-6543" "3210"

2022年2月14日 (月)

[R]文字の文字コードを数値で得る

charToRaw関数で文字列ロウ型に変換し、それをas.integer関数で数値型に変換することで得られる。得られた文字コードの数値の値は、as.raw関数でロウ型に変換し、rawToChar関数で文字型に変換することで文字に戻すことができる。以下は、文字「A」(0x41)を数値型に変換し、その値に1を足して文字の「B」(0x42)を得た例。

> r <- charToRaw("A")
> r
[1] 41
> n <- as.integer(r)
> n
[1] 65
> rawToChar(as.raw(65 + 1))
[1] "B"

当然、文字列にもそのまま使うことができる。

> n <- as.integer(charToRaw("ABCabc"))
> n
[1] 65 66 67 97 98 99
> rawToChar(as.raw(n + 1))
[1] "BCDbcd"

日本語文字にも使える。「阿」、「伊」はそれぞれシフトJISで0x88a2、0x88c9。charToRaw関数の戻り値はロウ型であることに注意。

> Sys.getlocale()
[1] "LC_COLLATE=Japanese_Japan.932;LC_CTYPE=Japanese_Japan.932;LC_MONETARY=Japanese_Japan.932;LC_NUMERIC=C;LC_TIME=Japanese_Japan.932"
> s <- c("A", "ab", "あい", "阿伊123")
> for (i in 1:length(s)) print(charToRaw(s[i]))
[1] 41
[1] 61 62
[1] 82 a0 82 a2
[1] 88 a2 88 c9 31 32 33
> for (i in 1:length(s)) print(as.integer(charToRaw(s[i])))
[1] 65
[1] 97 98
[1] 130 160 130 162
[1] 136 162 136 201 49 50 51

2022年2月12日 (土)

[R]日付からその日の曜日を得る

weekdays関数を使う。以下は2021年の4月1~3日の曜日を得る例。

> d <- seq(as.Date("2021-04-01"), length = 3, by = "1 day")
> d
[1] "2021-04-01" "2021-04-02" "2021-04-03"
> weekdays(d)
[1] "木曜日" "金曜日" "土曜日"

特定の1日であれば、以下のようにする。西暦1年1月1日の曜日は月曜日であることがわかる。

> weekdays(as.Date("0001-01-01"))
[1] "月曜日"

2022年2月 3日 (木)

[R]毎年の太陽黒点数(Wolfer sunspot number)のデータ

パッケージTSSSに格納されている。データ名はSunspot。1749年から1979年までの毎年の値で、データ数は231個。

> library(TSSS)
> Sunspot
エラー: オブジェクト 'Sunspot' がありません
> data(Sunspot)
> Sunspot
Time Series:
Start = 1749
End = 1979
Frequency = 1
[1] 80.9 83.4 47.7 47.8 30.7 12.2 9.6 10.2 32.4 47.6 54.0 62.9 85.9 61.2 45.1
[16] 36.4 20.9 11.4 37.8 69.8 106.1 100.8 81.6 66.5 34.8 30.6 7.0 19.8 92.5 154.4
[31] 125.9 84.8 68.1 38.5 22.8 10.2 24.1 82.9 132.0 130.9 118.1 89.9 66.6 60.0 46.9
[46] 41.0 21.3 16.0 6.4 4.1 6.8 14.5 34.0 45.0 43.1 47.5 42.2 28.1 10.1 8.1
[61] 2.5 0.1 1.4 5.0 12.2 13.9 35.4 45.8 41.1 30.1 23.9 15.6 6.6 4.0 1.8
[76] 8.5 16.6 36.3 49.6 64.2 67.0 70.9 47.8 27.5 8.5 13.2 56.9 121.5 138.3 103.2
[91] 85.7 64.6 36.7 24.2 10.7 15.0 40.1 61.5 98.5 124.7 96.3 66.6 64.5 54.1 39.0
[106] 20.6 6.7 4.3 22.7 54.8 93.8 95.8 77.2 59.1 44.0 47.0 30.5 16.3 7.3 37.6
[121] 74.0 139.0 111.2 101.6 66.2 44.7 17.0 11.3 12.4 3.4 6.0 32.3 54.3 59.7 63.7
[136] 63.5 52.2 25.4 13.1 6.8 6.3 7.1 35.6 73.0 85.1 78.0 64.0 41.8 26.2 26.7
[151] 12.1 9.5 2.7 5.0 24.4 42.0 63.5 53.8 62.0 48.5 43.9 18.6 5.7 3.6 1.4
[166] 9.6 47.4 57.1 103.9 80.6 63.6 37.6 26.1 14.2 5.8 16.7 44.3 63.9 69.0 77.8
[181] 64.9 35.7 21.2 11.1 5.7 8.7 36.1 79.7 114.4 109.6 88.8 67.8 47.5 30.6 16.3
[196] 9.6 33.2 92.6 151.6 136.3 134.7 83.9 69.4 31.5 13.9 4.4 38.0 141.7 190.2 184.8
[211] 159.0 112.3 53.9 37.5 27.9 10.2 15.1 47.0 93.8 105.9 105.5 104.5 66.6 68.9 38.0
[226] 34.5 15.5 12.6 27.5 92.5 155.4
> plot(Sunspot)


Sunspot

« 2021年11月 | トップページ | 2022年3月 »

無料ブログはココログ

■■

■■■