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::mapvalues
with dplyr
?またはさらに良いことに、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関数はより高速で一般的である傾向があります。
ただし、plyrをロードせずにdplyrをロードした場合は、plyr::mapvalues
を使用してmapvalues
を呼び出すことができます。
質問にも言及されているように
またはさらに良いことに、dplyrの同等物は何ですか?
同等のものはrecodeです。
http://www.cookbook-r.com/Manipulating_data/Renaming_levels_of_a_factor/
name <- c("John", "Clara", "Smith")
sex <- c(1,2,1)
age <- c(30,32,54)
df <- data.frame(name,sex,age)
df %>% mutate(sex=recode(sex,
`1`="Male",
`2`="Female"))
これにより、1が男性に、2が女性に「マップ値」されます。