ひろがりモンステラ

家のモンステラが凄いことになってる社内SEの雑記ブログです。

R データフレームをsubsetを用いてベクトルで絞り込む

やりたいこと

データフレームについて、ある特定の列について、複数の値のいずれかに一致するという条件で行の絞り込みを行ないたい。例えば、下記のようなデータフレームがあったとき、appleとorangeの行のみを抽出したい。

> #テストデータ
> dat <- data.frame(
            item = c("apple", "orange", "apple", "orange", "grape", "grape", "apple"),
            locate = c("Osaka", "Osaka", "Kyoto", "Tokyo", "Tokyo", "Kyoto", "Tokyo"),
            price = c(100, 200, 120, 180, 200, 210, 140))

> #出力
> dat
    item locate price
1  apple  Osaka   100
2 orange  Osaka   200
3  apple  Kyoto   120
4 orange  Tokyo   180
5  grape  Tokyo   200
6  grape  Kyoto   210
7  apple  Tokyo   140

下記のとおり、細々とOR条件を用いてsubsetを使う方法があるが、これだと要素が増えたときや、要素が可変となる時に対応が面倒。

dat_result <- subset(dat, dat$item=="orange" | dat$item=="apple")

> dat_result
    item locate price
1  apple  Osaka   100
2 orange  Osaka   200
3  apple  Kyoto   120
4 orange  Tokyo   180
7  apple  Tokyo   140
対応

ベクトルで絞り込むのがベスト。この場合、== でなく、%in% を使う。
※==の場合、ベクトルの最初の要素でしか絞り込まれないので注意。

items <- c("orange", "apple")

dat_result <- subset(dat, dat$item %in% items)

> dat_result
    item locate price
1  apple  Osaka   100
2 orange  Osaka   200
3  apple  Kyoto   120
4 orange  Tokyo   180
7  apple  Tokyo   140

execute, conduct, carry out「実行する」に関する英単語の使い分け

現在とあるTOEIC対策の参考書を読み進めているんだけれど、
execute a plan [計画を実行する]
conduct a survey [アンケート調査を行う]
という例文が近くのページで紹介されていて、イマイチ違いが明確に記述されていなかったので調べてみた。

計画されたことを実行する

execute
(職務・計画・命令などを)実行する、執行する、処刑する。
execute a command [命令を実行する]
execute the murder [殺人犯を処刑する]

既に決められたこと、計画されていることを行うことに使うみたい。プログラムやスクリプトの(命令の)実行がexecuteだから、それと併せて覚えれば良さそう。
※プログラム実行はrunで表現することもあるけど、あまり大きな違いはないみたい。


先立って行う

conduct
(業務などを)行う、処理する、指揮する、案内する。
He conducted the party up the mountain. [彼は一行を導き山を登った]
conduct one's business affairs [業務を行う]
conduct an orchestra [オーケストラを指揮する]

executeが計画されたことに対して、conductは先立って動くことを表している。旅行を(旅行客に先立って)案内するツアーコンダクターはconductから来ている。


目的を成し遂げる

carry out
(目的などを)成し遂げる、遂行する。
carry out a mission. [任務を遂行する]
carried out a important project. [重要なプロジェクトを成し遂げた]
carry out a contract. [契約を履行する]

何か決まったことを行う意味では、executeに近いが、carry outは、より大きな事柄を達成・成し遂げたときに使う模様。



他にも、学生時代に「する」を表す動詞として教えられるdoが同類表現として挙げられるけど、上述3つが違いとしてややこしそうだった。必要に応じて更新予定。

R 合計がゼロになるデータフレームの列の削除

やりたいこと

データフレームを使っているとき、合計がゼロとなる不要な列が出てきた場合その列を除外したい。例えば、以下のようなデータがあったとき、合計がゼロとなるC列・E列を除外したい。

> #テストデータ
> dat <- data.frame(
            A = seq(1, 10), 
            B = seq(2, 20, 2), 
            C = rep(0, 10), 
            D = seq(3, 30, 3), 
            E = rep(0, 10) )

> #出力
> dat
    A  B C  D E
1   1  2 0  3 0
2   2  4 0  6 0
3   3  6 0  9 0
4   4  8 0 12 0
5   5 10 0 15 0
6   6 12 0 18 0
7   7 14 0 21 0
8   8 16 0 24 0
9   9 18 0 27 0
10 10 20 0 30 0
対処方法

colSums() で弾いちゃえば良い。colSums() を使うとデータフレームの各列の合計を返してくれる。

> colSums(dat)
  A   B   C   D   E 
 55 110   0 165   0 


これを活用して、データフレームの列を指定すればOK。

> dat[colSums(dat)!=0]
    A  B  D
1   1  2  3
2   2  4  6
3   3  6  9
4   4  8 12
5   5 10 15
6   6 12 18
7   7 14 21
8   8 16 24
9   9 18 27
10 10 20 30

feeやfareなど「料金」に関する英単語のカテゴリ分け

TOEICに頻発するfeefareについてどのように違うか調べてみた。単純にどの単語がどういった意味を持つかを並べるだけではあまり頭に入って来なかったので、カテゴリ分けしてみる。

サービスに関する料金

交通に関する料金

交通機関の運賃

fare
電車やバス、船などの運賃のこと。
a bus fare [バス代]
a taxi fare [タクシー代]

通行料

toll
高速道路や橋の通行料のこと。
highway toll [高速道路料金]
bridge-toll [橋の通行料]

交通以外の料金

専門的なサービスにまつわる料金

fee
弁護士や医者、顧問などに支払う謝礼、報酬金のこと。
consulting service fee [コンサルティング費]
legal fees [弁護士への謝礼]

特定の基準をもとに設定された料金

rate
一定の率に基づいた料金、値段のこと。
hotel rates [ホテル料金]
postal rates [郵便料金]

サービスの利用料や手数料

charge
請求金額や料金のこと。
the charage for delivery [配達料金]
credit-card charage [クレジットカードの請求金額]

モノに関する料金

price
品物の価格や値段のこと。
a fixed price [定価]
price of iPhone X [iPhone Xの値段]





ざっと「料金」に関する単語についてカテゴリに分けて記載してみた。costexpenseと言った、モノやサービスに跨って表現できる「費用・経費」のような単語もあるので、このあたりも整理していきたい。

ブログを始めてみた

こんにちは。

ちょうどこの記事の投稿画面に

最初の記事を書いてみましょう
ブログ開設おめでとうございます。まずこんなテーマで、初めての記事を書いてみてはいかがでしょう?

と記述されているので、そのテーマに添って書いてみる。

かんたんな挨拶や自己紹介をしてみましょう

かんたんな挨拶

まいど!

自己紹介
  • 職業は社内SE
  • 趣味は音楽鑑賞とサッカー観戦
  • 2年前に買い始めたモンステラに家を侵食されかけている

このブログでこれから書いてみたいと思っていること。「今日印象に残ったこと」などテーマをはっきりさせるとブログが続きやすくなります

過去、何度かブログを運営したことがあったけれど、ひと目を気にしすぎてなかなか長続きしなかったので、見てもらうことを意識しすぎずアウトプットを続けていきたい。書きたいなと思っているのは、

  • なかなか覚えられない英単語やイディオム(書くことで覚える)
  • ITやテクノロジのTips・覚え書き(ブログで整理して後から読み返す)
  • その他日々のこと

新しいブログを始めるにあたって、意気込みを一言!

あまり意気込みすぎると長続きしなくなるので、週2更新くらいで頑張りたい。