R(その他)

2025年12月 5日 (金)

[R]Outlookのメールアドレス入力欄よりコピペしたテキストからアドレス一覧を作成する

Outlookのメール作成のウィンドウで、メールアドレスの入力欄よりコピペしたテキストは、例えば以下のような1行のテキストになるはず。

フレイア <freyja@macross.jp>; 美雲 <mikumo@macross.jp>; カナメ <kaname@macross.jp>

これを「(名前),(メールアドレス)」に変換する方法。

名前とメールアドレスをそれぞれキャプチャしてグループ化して、それらのグループを利用すればよい。

> print(line)
[1] "フレイア <freyja@macross.jp>; 美雲 <mikumo@macross.jp>; カナメ <kaname@macross.jp>"
> words <- unlist(strsplit(trimws(line), "[ ]*;[ ]*"))
> print(words)
[1] "フレイア <freyja@macross.jp>" "美雲 <mikumo@macross.jp>" "カナメ <kaname@macross.jp>"
> lines <- gsub("^(.*)[ ]+<(.*)>$", "\\1,\\2", words)
> print(lines)
[1] "フレイア,freyja@macross.jp" "美雲,mikumo@macross.jp" "カナメ,kaname@macross.jp"

このベクトルを利用してwrite関数でテキストファイルに書き込めば、簡単にCSVファイルを作ることができる。

> write(lines, file = "temp.csv")

出力されたテキストファイル(temp.csv)の中身

フレイア,freyja@macross.jp
美雲,mikumo@macross.jp
カナメ,kaname@macross.jp

2025年7月11日 (金)

[R]サンプルのデータセット「面積が1万平方マイルを超える陸塊」

datasetsパッケージのislandsは、面積が1万平方マイルを超える陸塊をまとめたサンプルのデータセット。引用元は以下のとおり。

The World Almanac and Book of Facts, 1975, page 406

> length(islands)
[1] 48
> head(islands)
Africa Antarctica Asia Australia Axel Heiberg
11506 5500 16988 2968 16
Baffin
184
> tail(islands)
Taiwan Tasmania Tierra del Fuego Timor
14 26 19 13
Vancouver Victoria
12 82
> names(islands)
[1] "Africa" "Antarctica" "Asia"
[4] "Australia" "Axel Heiberg" "Baffin"
[7] "Banks" "Borneo" "Britain"
[10] "Celebes" "Celon" "Cuba"
[13] "Devon" "Ellesmere" "Europe"
[16] "Greenland" "Hainan" "Hispaniola"
[19] "Hokkaido" "Honshu" "Iceland"
[22] "Ireland" "Java" "Kyushu"
[25] "Luzon" "Madagascar" "Melville"
[28] "Mindanao" "Moluccas" "New Britain"
[31] "New Guinea" "New Zealand (N)" "New Zealand (S)"
[34] "Newfoundland" "North America" "Novaya Zemlya"
[37] "Prince of Wales" "Sakhalin" "South America"
[40] "Southampton" "Spitsbergen" "Sumatra"
[43] "Taiwan" "Tasmania" "Tierra del Fuego"
[46] "Timor" "Vancouver" "Victoria"

全部で48個納められている。単位は平方マイルであることに注意。これを平方メートルに変換するには、1マイルは約1609mであるので、それぞれ1609^2=2588881、平方キロメールに変換するには1.609^2=2.588881で割ればよい。北海道、本州、九州で試してみる。

> s <- c("Hokkaido", "Honshu", "Kyushu")
> islands[s]
Hokkaido Honshu Kyushu
30 89 14
> islands[s] / 1609 ^ 2
Hokkaido Honshu Kyushu
1.158802e-05 3.437779e-05 5.407742e-06
> islands[s] / 1.609 ^ 2
Hokkaido Honshu Kyushu
11.588018 34.377787 5.407742

ニュージーランドの北島と南島でも試してみる。

> s <- grep("New Zealand", names(islands))
> islands[s]
New Zealand (N) New Zealand (S)
44 58
> islands[s] / 1609 ^ 2
New Zealand (N) New Zealand (S)
1.699576e-05 2.240350e-05
> islands[s] / 1.609 ^ 2
New Zealand (N) New Zealand (S)
16.99576 22.40350

2025年1月21日 (火)

[R]PDFファイルを画像に変換する

pdftoolsパッケージのpdf_render_page関数を使うとraw型に変換することができる。これを例えばpngパッケージのwritePNG関数を使えば画像に変換することができる

> library(pdftools)
> filepath <- "https://www.aoni.co.jp/search/items/suzuki-minori.pdf"
> r <- pdf_render_page(filepath)
> library(png)
> ra <- pdf_render_page(filepath)
> library(png)
> writePNG(ra, "suzukiminori.png", dpi = 600)

R_pdftools_suzukiminori

2025年1月20日 (月)

[R]PDFファイルに含まれているフォントの情報を得る

pdftoolsパッケージのpdf_fonts関数を使う。以下は、芸能人「中居正広」の公式ウェブサイト「のんびりなかい」にある2025年1月9日報道発表の記事のPDFファイルから、文書のフォント情報を抜き出した例。

> library(pdftools)
> filepath <- "http://www.nonbirinakai.co.jp/wp/wp-content/uploads/2025/01/250109.pdf"
> lis <- pdf_fonts(filepath)
> lis |> as.data.frame()
name type embedded file
1 AAAAAA+HiraMinProN-W6 type3 TRUE
(以下、表示省略)

PDFファイルに含まれているフォントの情報はAcrobat Readerでも確認できる。PDFファイルをAcrobat Readerで開いた際に、左上「メニュー」→「文書のプロパティ」→タブ「フォント」で表示される内容がそれである。

2025年1月15日 (水)

[R]PDFファイルの文書のプロパティを得る

pdftoolsパッケージのpdf_info関数を使う。以下は、芸能人「中居正広」の公式ウェブサイト「のんびりなかい」にある2025年1月9日報道発表の記事のPDFファイルから、文書のプロパティを読み込んだ例。

> library(pdftools)
> filepath <- "http://www.nonbirinakai.co.jp/wp/wp-content/uploads/2025/01/250109.pdf"
> lis <- pdf_info(filepath)
> names(lis)
[1] "version" "pages" "encrypted" "linearized" "keys" "created" "modified" "metadata"
[9] "locked" "attachments" "layout"
> lis$version
[1] "1.4"
> lis$pages
[1] 1

PDFのバージョンは1.4で全1ページのPDFであることがわかる。

PDFファイルの文書のプロパティとは、PDFファイルをAcrobat Readerで開いた際に、左上「メニュー」→「文書のプロパティ」により表示されるファイルの内部情報のこと。エクスプローラー上の右クリックのコンテキストメニューで表示できるプロパティとは異なることに注意。

2025年1月13日 (月)

[R]PDFファイルからテキストを抜き出す

pdftoolsパッケージのpdf_text関数を使う。以下は、芸能人「中居正広」の公式ウェブサイト「のんびりなかい」にある2025年1月9日報道発表の記事のPDFファイルから、文書のテキストを抜き出した例。

> library(pdftools)
> filepath <- "http://www.nonbirinakai.co.jp/wp/wp-content/uploads/2025/01/250109.pdf"
> lns <- pdf_text(filepath)
> length(lns)
[1] 1
> s <- unlist(strsplit(trimws(lns), "\\s+"))
> length(s)
[1] 34
> head(s)
[1] "‭お詫び‬"
[2] "‭‬"
[3] "‭"
[4] "の度は、皆様にご迷惑をお掛けしていること、大変申し訳なく思っております。‬"
[5] "こ"
[6] "‭報道内容においては、事実と異なるものもあり、相手さま、関係各所の皆さまに対しては‬"

4~5を見てのとおり、PDFファイルの構造上、テキストを表示された文章のようにきれいに抜き出すことは難しいことに注意。

2025年1月 8日 (水)

[R]祝日を一覧形式で得る

内閣府のウェブサイトの以下のページでは、昭和30年(1955年)~令和7年(2025年)の祝日をCSV形式のファイルで公開している(2024年11月現在)。これを利用する。

https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html

以下はそのCSVファイルを利用して、令和6年度(2024-04-01/2025-03-31)の祝日を抜き出した例。

> library(tidyverse)
> options(readr.show_progress = FALSE, readr.show_col_types = FALSE)
> s <- "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"
> loc <- locale(encoding = "Shift_JIS")
> hday <- read_csv(s, locale = loc)
> colnames(hday) <- c("date", "name")
> tib <- hday |> filter(date >= as.Date("2024-04-01") & date <= as.Date("2025-03-31"))
> tib |> as.data.frame()
date name
1 2024/4/29 昭和の日
2 2024/5/3 憲法記念日
3 2024/5/4 みどりの日
4 2024/5/5 こどもの日
5 2024/5/6 休日
6 2024/7/15 海の日
7 2024/8/11 山の日
8 2024/8/12 休日
9 2024/9/16 敬老の日
10 2024/9/22 秋分の日
11 2024/9/23 休日
12 2024/10/14 スポーツの日
13 2024/11/3 文化の日
14 2024/11/4 休日
15 2024/11/23 勤労感謝の日
16 2025/1/1 元日
17 2025/1/13 成人の日
18 2025/2/11 建国記念の日
19 2025/2/23 天皇誕生日
20 2025/2/24 休日
21 2025/3/20 春分の日

2024年11月 6日 (水)

[R]MLBの通算安打数の20位までを調べる

Lahmanデータベースを使うと簡単に調べることができる。

> library(Lahman)
> library(tidyverse)
> Batting %>% group_by(playerID) %>% summarize(H = sum(H)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, H) %>% arrange(desc(H)) %>%
+ as.data.frame() %>% head(20)
nameFirst nameLast H
1 Pete Rose 4256
2 Ty Cobb 4189
3 Hank Aaron 3771
4 Stan Musial 3630
5 Tris Speaker 3514
6 Derek Jeter 3465
7 Cap Anson 3435
8 Honus Wagner 3420
9 Carl Yastrzemski 3419
10 Albert Pujols 3384
11 Paul Molitor 3319
12 Eddie Collins 3315
13 Willie Mays 3283
14 Eddie Murray 3255
15 Nap Lajoie 3243
16 Cal Ripken 3184
17 Adrian Beltre 3166
18 George Brett 3154
19 Paul Waner 3152
20 Robin Yount 3142

通算安打数の一位はピート・ローズの4256本、二位はタイ・カッブの4189本、三位はハンク・アーロンの3771本であることがわかる。参考までに、イチローは以下のとおり3089本。

> Batting %>% group_by(playerID) %>% summarize(H = sum(H)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, H) %>% filter(nameFirst == "Ichiro") %>%
+ as.data.frame()
nameFirst nameLast H
1 Ichiro Suzuki 3089

2024年10月23日 (水)

[R]MLBの通算盗塁数の20位までを調べる

Lahmanデータベースを使うと簡単に調べることができる。

> library(Lahman)
> library(tidyverse)
> Batting %>% group_by(playerID) %>% summarize(SB = sum(SB)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, SB) %>% arrange(desc(SB)) %>%
+ as.data.frame() %>% head(20)
nameFirst nameLast SB
1 Rickey Henderson 1406
2 Lou Brock 938
3 Billy Hamilton 914
4 Ty Cobb 896
5 Tim Raines 808
6 Vince Coleman 752
7 Eddie Collins 741
8 Max Carey 738
9 Honus Wagner 723
10 Joe Morgan 689
11 Willie Wilson 668
12 Bert Campaneris 649
13 Kenny Lofton 622
14 Otis Nixon 620
15 George Davis 619
16 Juan Pierre 614
17 Billy Hoy 596
18 Maury Wills 586
19 George Van Haltren 583
20 Ozzie Smith 580

通算盗塁数の一位はリッキー・ヘンダーソンの1406個、二位はルー・ブロックの938個、三位はビリー・ハミルトンの914個であることがわかる。

2024年10月16日 (水)

[R]MLBの通算本塁打数の20位までを調べる

Lahmanデータベースを使うと簡単に調べることができる。

> library(Lahman)
> library(tidyverse)
> Batting %>% group_by(playerID) %>% summarize(HR = sum(HR)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, HR) %>% arrange(desc(HR)) %>%
+ as.data.frame() %>% head(20)
nameFirst nameLast HR
1 Barry Bonds 762
2 Hank Aaron 755
3 Babe Ruth 714
4 Albert Pujols 703
5 Alex Rodriguez 696
6 Willie Mays 660
7 Ken Griffey 630
8 Jim Thome 612
9 Sammy Sosa 609
10 Frank Robinson 586
11 Mark McGwire 583
12 Harmon Killebrew 573
13 Rafael Palmeiro 569
14 Reggie Jackson 563
15 Manny Ramirez 555
16 Mike Schmidt 548
17 David Ortiz 541
18 Mickey Mantle 536
19 Jimmie Foxx 534
20 Willie McCovey 521

通算本塁打数の一位はバリー・ボンズの762本、二位はハンク・アーロンの755本、三位はベーブ・ルースの714本であることがわかる。

より以前の記事一覧

無料ブログはココログ

■■

■■■