2

特定の行の各要素をその行の平均で除算しようとした後、私はいくつかの問題に直面しています。ダミーのデータセット:

set.seed(1)
x <- cbind(Plant = letters[1:5],
           as.data.frame(matrix(rnorm(60), ncol = 12)))
x

したがって、プラント a の場合、V1、V2...V12 をその行の平均で割ってください。

次を使用して実行できると思いました:

x/rowMeans(x)

しかし、私はエラーが発生します:

Error in rowMeans(x) : 'x' must be numeric

このエラーは、ベクターではなく data.frame であるため、データの形式が原因であると想定しています。ただし、データの形式を変更することで、行ごとの平均を計算することができました。

library(data.table)
x.T <- as.data.table(x)
x.T[,list(Mean=rowMeans(.SD)), by=Plant]

そこから、どこへ行けばいいのかわからない。ループが機能すると考えていますが、いくつかの検索を行うと、推奨されていないことがわかります。したがって、各サンプルプラントの正規化されたデータが必要です。何か提案はありますか?

4

1 に答える 1

4

Plant最初のエラーは、数値以外の変数/列を含む平均を取得しようとしたことから発生しています。試す:

cbind(x$Plant, x[,-1]/rowMeans(x[,-1]))
于 2013-07-06T16:36:56.113 に答える