web-dev-qa-db-ja.com

`mutate_at`と` na_if`を使ってゼロをnaに置き換える

私のデータはこの形式を取ります:

_library(tidyverse)
df <- mtcars
df <- df %>% mutate(vs_doubled = vs * 2) %>% select(mpg, cyl, vs, am, vs_doubled)

head(df)


#>    mpg cyl vs am vs_doubled
#> 1 21.0   6  0  1          0
#> 2 21.0   6  0  1          0
#> 3 22.8   4  1  1          2
#> 4 21.4   6  1  0          2
#> 5 18.7   8  0  0          0
#> 6 18.1   6  1  0          2
_

_mutate_at_と_na_if_を使用しようとしています。列の「vs_doubled」をゼロに残したいと思います。

次の行が機能しないため、私はそれを正しく持っていません。

_df <- df %>% mutate_at(.vars = c("vs", "am"), .funs = na_if(y = 0))
_
7
Jeremy K.

私のデータフレームに特定の値を変更する方法を探していました(値<2)。ただし、na_if()が間違いなく機能していませんでした。私はRONAKの提案を使用しました - 私の唯一の編集はTibbleをデータフレームに変換することです。

提案された解決策:

**df <**- df %>% mutate_at(vars(vs, am), ~replace(., . == 0, NA)) 
 _

私のスクリプトのexcerpt /アプリケーション:

wave_T_max <- wave_T_max %>% 
      mutate_at(vars(Value), ~replace(Value, Value <2, NA))
 _
0
I Bee