1. ホーム
  2. r

[解決済み] dplyrは多くのデータ型を変更する

2023-07-12 07:20:55

質問

data.frameを持っています。

dat <- data.frame(fac1 = c(1, 2),
                  fac2 = c(4, 5),
                  fac3 = c(7, 8),
                  dbl1 = c('1', '2'),
                  dbl2 = c('4', '5'),
                  dbl3 = c('6', '7')
                  )

データ型を変更するには、次のようなものを使います。

l1 <- c("fac1", "fac2", "fac3")
l2 <- c("dbl1", "dbl2", "dbl3")
dat[, l1] <- lapply(dat[, l1], factor)
dat[, l2] <- lapply(dat[, l2], as.numeric)

dplyr

dat <- dat %>% mutate(
    fac1 = factor(fac1), fac2 = factor(fac2), fac3 = factor(fac3),
    dbl1 = as.numeric(dbl1), dbl2 = as.numeric(dbl2), dbl3 = as.numeric(dbl3)
)

は、dplyrでよりエレガントな(短い)方法はありますか?

thx クリストフ

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

標準の評価版である mutate_each (これは mutate_each_ ) を使って列のクラスを変更することができます。

dat %>% mutate_each_(funs(factor), l1) %>% mutate_each_(funs(as.numeric), l2)