における条件(複数可)に基づいて単一の列の値(複数可)を置き換える突然変異dplyr Iは、それぞれの値c t
、c_t
でカラムb
のo p
、o_p
を交換したいと思います。私は以下のアプローチを用いてこの課題を達成しました。は、効率的な方法
d <- data.frame(a = c(5,6,3,7,4,3,8,3,2,7),
b = c('c t','c_t','d','o p','o_p','c m','c_t','d','o t','o_p'))
# Way-1
d %>%
mutate(b = replace(b, b == 'c t', 'c_t')) %>%
mutate(b = replace(b, b == 'o p', 'o_p'))
# Way-2
d %>% mutate(b = replace(b, b == 'c t', 'c_t'),
b = replace(b, b == 'o p', 'o_p'))
出力:
# a b
# 1 5 c_t
# 2 6 c_t
# 3 3 d
# 4 7 o_p
# 5 4 o_p
# 6 3 c m
# 7 8 c_t
# 8 3 d
# 9 2 o t
# 10 7 o_p
しかし、私はこれを達成するために、他の効率的なアプローチがあるかどうかを知りたいですか?私は選択された値に対してのみこれを行う必要がありますが、すべての値にはスペースがありません。
これは、選択した値に対してのみ行い、列内のすべての値に対しては行いません。 – Prradep
@Prradep出力をチェックすると、期待される出力が得られます。あなたの例を変更してください。 – akrun
@Prradepあなたが選択する必要があれば、 'd%>%mutate(b = as.character(b)、b = ifelse(%c%c( 'c t'、 'o p' )、sub( ""、 "_"、b)、b)) ' – akrun