R でデータ フレームを行列に変換する方法 (例付き)


次のいずれかの方法を使用して、データ フレームを R の行列に変換できます。

方法 1: データフレームを数値列から行列に変換する

 mat <- as. matrix (df)

方法 2: 文字/因子を含むデータ フレームを行列に変換する

 mat <- data. matrix (df)

どちらの方法も基本的な R 関数を使用するため、これらの方法を使用するために外部パッケージをインストールする必要はないことに注意してください。

次の例は、各メソッドを実際に使用する方法を示しています。

方法 1: データフレームを数値列から行列に変換する

R に数値列のみを含む次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34),
                 rebounds=c(30, 28, 24, 24, 28))

#view data frame
df

  points assists rebounds
1 99 33 30
2 90 28 28
3 86 31 24
4 88 39 24
5 95 34 28

as.matrix()関数を使用すると、このデータ フレームを数値行列にすばやく変換できます。

 #convert data frame to matrix
mat <- as. matrix (df)

#view matrix
mast

     points assists rebounds
[1,] 99 33 30
[2,] 90 28 28
[3,] 86 31 24
[4,] 88 39 24
[5,] 95 34 28

#view class of mat
class(mat)

[1] "matrix" "array"

class()関数を使用して、新しいオブジェクトが実際に行列であることを確認します。

方法 2: 文字/因子を含むデータ フレームを行列に変換する

R に文字列と数値列の両方を含む次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34))

#view data frame
df

  team points assists
1 A 99 33
2 A 90 28
3 B 86 31
4 B 88 39
5 C 95 34

data.matrix()関数を使用すると、このデータ フレームを数値行列にすばやく変換できます。

 #convert data frame to matrix
mat <- data. matrix (df)

#view matrix
mast

     team points assists
[1,] 1 99 33
[2,] 1 90 28
[3,] 2 86 31
[4,] 2 88 39
[5,] 3 95 34

#view class of mat
class(mat)

[1] "matrix" "array"

class()関数を使用して、新しいオブジェクトが実際に行列であることを確認します。

次のように入力することもできます。

 ?data.matrix

これは次のことを示しています。

 Description:
     Return the matrix obtained by converting all the variables in a
     data frame to numeric mode and then binding them together as the
     columns of a matrix. Factors and ordered factors are replaced by
     their internal codes.

これは、チーム名 A、A、B、B、C が値 1、1、2、2、3 に変換された理由を説明します。

追加リソース

次のチュートリアルでは、R で他の一般的な操作を実行する方法について説明します。

R でデータ フレームの列をベクトルに変換する方法
Rで行列をベクトルに変換する方法
R でテーブルをデータ フレームに変換する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です