1. ホーム
  2. r

[解決済み] データフレーム内の多くの列のクラスをfactorからnumericに変更する。

2023-05-16 20:54:55

質問

多数の列を factor から numeric に変更する最も迅速で最良の方法は何でしょうか。

私は次のコードを使用しましたが、それは私のデータを再順序付けしているように見えます。

> head(stats[,1:2])
  rk                 team
1  1 Washington Capitals*
2  2     San Jose Sharks*
3  3  Chicago Blackhawks*
4  4     Phoenix Coyotes*
5  5   New Jersey Devils*
6  6   Vancouver Canucks*

for(i in c(1,3:ncol(stats))) {
    stats[,i] <- as.numeric(stats[,i])
}

> head(stats[,1:2])
  rk                 team
1  2 Washington Capitals*
2 13     San Jose Sharks*
3 24  Chicago Blackhawks*
4 26     Phoenix Coyotes*
5 27   New Jersey Devils*
6 28   Vancouver Canucks*

のようにすべてのカラムに名前を付けることを除けば、最良の方法は何でしょうか?

df$colname <- as.numeric(ds$colname)

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

Ramnath氏の回答に加えて、あなたが経験している動作は、以下の原因によるものです。 as.numeric(x) が内部的な要素の数値表現を返すためです。 x をRレベルで返す。因子のレベルである数値(内部表現ではなく)を保持したい場合は、文字に変換するために as.character() で文字に変換する必要があります。

あなたの for ループは apply を呼び出すのと同じくらい合理的で、コードの意図するところとして少し読みやすくなるかもしれません。この行を変更するだけです。

stats[,i] <- as.numeric(stats[,i])

を読む

stats[,i] <- as.numeric(as.character(stats[,i]))

これは FAQ 7.10 をR FAQに追加したものです。

HTH