データフレームがあります。データフレームの要素をバイナリデータに変換する
zz <- "col1 col2 col3
1 A B C
2 A B C
3 A B A
4 A C A
5 B B A
6 B B A"
Data <- read.table(text=zz, header = TRUE)
各列には2つの値しかありません。私は最も頻繁な値を0に変換し、最も低い値を1に変換したいと思います。 [[<-.data.frame
(*tmp*
、I、値= Cで
エラー:私はこの試みた
zz <- "col1 col2 col3 1 1 1 0 2 1 1 0 3 1 1 1 4 1 0 1 5 0 1 1 6 0 1 1"
:私はこのようなすべての列にこれを適用したい
をしかし得ます(2L、2L、2L、2L、2L、2L、: の置換は12行あり、データは11デフプラスです:警告メッセージ:for (i in 1:3){ Data[[i]][[names(sort(summary(as.factor(Data[[i]])),decreasing=TRUE)[1])]] <- 0 Data[[i]][[names(sort(summary(as.factor(Data[[i]])),decreasing=TRUE)[2])]] <- 1 }
[[<-.factor
(*tmp*
) RY(as.factor(df.matrix_binary [[I]]))、: 無効な因子レベルは、NAが
を持つ一つの選択肢は親切 'ソート(表(x))をに変更され、[ - 1]' – Wen
@Wen、私は場合には、予期しない結果を生む心配OPの列に2以上の値があります。私。 3つの値がある場合、 '[-1]'は2つを選択し、 '=='は比較の2つの値をリサイクルします。 'Data [、3] == names(sort(table(Data [、3])))'を試してください。恐らくエラーを投げるのが最善でしょう –