2

data.frame があり、因子変数のレベルを変更したいので、次のようにします。

> df1 <- data.frame(id = 1:5, fact1 = factor(letters[1:5]))
> head(df1)
  id fact1
1  1     a
2  2     b
3  3     c
4  4     d
5  5     e
> levels(df1$fact1)[which(levels(df1$fact1) == 'a')] <- 'missing'
> df1
  id   fact1
1  1 missing
2  2       b
3  3       c
4  4       d
5  5       e

しかし、関数内でこれを行おうとすると、すべてが新しい値に変わります。

changeLevel1 <- function(x){
levels(x)[which(levels(x) == 'a')] <- 'missing'
}

df1$fact1 <- changeLevel1(df1$fact1)

> df1
  id   fact1
1  1 missing
2  2 missing
3  3 missing
4  4 missing
5  5 missing

これを行う正しい方法は何ですか?

4

1 に答える 1