1. ホーム
  2. r

[解決済み] dplyrでplyr::mapvaluesを使用する

2022-02-11 10:45:07

質問

plyr::mapvalues はこのように使用することができます。

mapvalues(mtcars$cyl, c(4, 6, 8), c("a", "b", "c"))

しかし、これではうまくいきません。

mtcars %>%
dplyr::select(cyl) %>%
mapvalues(c(4, 6, 8), c("a", "b", "c")) %>%
as.data.frame()

を使用するにはどうすればよいですか? plyr::mapvaluesdplyr ? あるいは、さらに良いことに dplyr に相当するのでしょうか?

どのように解決するのですか?

2020年のアップデート plyrは現在quot;retired"パッケージであり、その公式ガイダンスでは、代わりに活発に改善・保守されているdplyrパッケージを使用するように勧めています。そのため、この場合はdplyrのみを使用することが望ましいです。 dplyr::recode() のように 他の答え そして、plyrを完全に回避する。

使用するには plyr::mapvalues() をdplyrと一緒に使用します。

使って、1列のdata.frameを返すこと。

mtcars %>%
  transmute(cyl = plyr::mapvalues(cyl, c(4, 6, 8), c("a", "b", "c")))

また、作業例のように単一のベクトル出力が必要な場合は、次のようにします。 pull :

mtcars %>%
  pull(cyl) %>%
  plyr::mapvalues(., c(4, 6, 8), c("a", "b", "c"))

dplyrとplyrの両方を同時に使用する場合は、以下のメモを参照してください。 dplyr readme :

plyrとdplyrの両方を同時に読み込む場合は、少し注意が必要です。 同時に 最初にplyrをロードし、次にdplyrをロードすることをお勧めします。 より高速なdplyrの関数が検索パスの最初に来ます。また dplyrとplyrの両方が提供するどの関数も、大体は同じように動作します。 しかし、Dplyrの関数はより速く、より一般的である傾向があります。

を呼び出すことができることに注意してください。 mapvalues を使って plyr::mapvalues plyr をロードする必要がなく dplyr がロードされた場合。