- 締切済み
統計ソフト『R』についての質問
再び質問です!!(>_<) Rで次のように入力するとエラー『以下にエラー Ops.factor(x[i, 1], y[1, j]) : 因子の水準セットが異なっています 』と出てしまいます。。 x <-read.csv("tvshukkou11.csv",header=F, sep=",") y <-read.csv("telebi.csv",header=F, sep=",") result <-array(,dim=24575) for(i in 1:24575){ for(j in 1:12621){ if (x[i,1]==y[1,j]){ sum(y[,j],na.rm=T) result[i] <-sum(y[,j],na.rm=T)-y[1,j] } } } 因子水準とか全然わからないのでさっぱりです。 よろしくおねがいします!!!
- みんなの回答 (1)
- 専門家の回答
みんなの回答
再現できるように質問した方がいいと思いますが...。 質問について以下のような数値例であなたのプログラムを記述しましたが、エラーでませんよ。 > x [,1] [,2] [,3] [,4] [,5] [1,] 1 4 7 10 13 [2,] 2 5 8 11 14 [3,] 3 6 9 12 15 > y [,1] [,2] [1,] 1 2 [2,] 3 4 [3,] 5 6 [4,] 7 8 以下をそのまま実行してみて、もう一度、あなたが行いたいことを整理しましょう。あなたが何をしたいのか私には判りませんので、あしからず。 > x <- matrix( c( 1:15),3,5) > y <- matrix( c( 1:8),4,2,byrow=T) > result <- array( dim=c( nrow(x) ) ) > for ( i in 1:nrow(x) ) { for ( j in 1:ncol(y) ) { if ( x[i,1] == y[1,j] ) #xの1列目とyの1行目が等しいときに以下の処理を行う { sum( y[,j] ) #意味のない命令で、必要ない result[i] <- sum( y[,j] ) - y[1,j] #yのj列の合計から1行目の値を引いた値をresultに代入する cat( "x[i,1]=",x[i,1]," sum(y[,j])=", sum(y[,j])," y[1,j]=",y[1,j],"\n" ) } } } x[i,1]= 1 sum(y[,j])= 16 y[1,j]= 1 x[i,1]= 2 sum(y[,j])= 20 y[1,j]= 2 > result [1] 15 18 NA