質問
私は、ビン/離散化したい正の数字を含むベクトルXを持っています。このベクトルの場合、数値[0、10]がベクトルに存在するのと同じように表示されたいのですが、数字[10、∞]は10+であることを望みます。
私が使用しています:
x <- c(0,1,3,4,2,4,2,5,43,432,34,2,34,2,342,3,4,2)
binned.x <- as.factor(ifelse(x > 10,"10+",x))
しかし、これは私にはklugeyを感じます。誰かがより良い解決策や別のアプローチを知っていますか?
解決
どうですか cut
:
binned.x <- cut(x, breaks = c(-1:9, Inf), labels = c(as.character(0:9), '10+'))
それは得られます:
# [1] 0 1 3 4 2 4 2 5 10+ 10+ 10+ 2 10+ 2 10+ 3 4 2
# Levels: 0 1 2 3 4 5 6 7 8 9 10+
他のヒント
あなたの質問は一貫性がありません。
説明で 10
「10+」グループに属しますが、コード内 10
分離レベルです。もしも 10
したほうがいい 「10+」グループにある場合、コードする必要があります
as.factor(ifelse(x >= 10,"10+",x))
この場合、データを10に切り捨てることができます(要因が必要ない場合):
pmin(x, 10)
# [1] 0 1 3 4 2 4 2 5 10 10 10 2 10 2 10 3 4 2 10
x[x>=10]<-"10+"
これにより、文字列のベクトルが得られます。使用できます as.numeric(x)
数字に戻すには( "10+"になります NA
)、 また as.factor(x)
上記の結果を得るため。
これにより、元のベクトル自体が変更されるため、別のベクトルにコピーしてそれに取り組むことをお勧めします。
所属していません StackOverflow