2016-09-08 4 views
1

5つの数値レベルに変換する数値ベクトルがあります。 は、私が使用して5つのレベルがcutの最小値と最大値をdata.frameの列として抽出します。

dx <- data.frame(x=1:100) 
dx$cut <- cut(dx$x,5) 

をカットすることができます。しかし、私は今のレベルの下限と上限の境界を抽出する問題を抱えています。 。 ですから、例えば (0.901,20.8用]

dx$maxdx$minで0.901と20.8になり、私が試した:

dx$min <- pmin(dx$cut) 
dx$max <- pmax(dx$cut) 
dx 

をしかし、これは動作しませんが、ラベルを分割しようとすることができ

+0

'dx $ cut'は因子変数です。数値を取得するには数値を分割/抽出する必要があります –

答えて

3

。 (事前にcharacterに変換し、,および.以外の句読点を除外するように変更して)、2列を作成します。

min_max <- unlist(strsplit(gsub("(?![,.])[[:punct:]]", "", as.character(dx$cut), perl=TRUE), ",")) # here, the regex ask to replace every punctuation mark except a . or a , by an empty string 

dx$min <- min_max[seq(1, length(min_max), by=2)] 
dx$max <- min_max[seq(2, length(min_max), by=2)] 

head(dx) 
# x   cut min max 
#1 1 (0.901,20.8] 0.901 20.8 
#2 2 (0.901,20.8] 0.901 20.8 
#3 3 (0.901,20.8] 0.901 20.8 
#4 4 (0.901,20.8] 0.901 20.8 
#5 5 (0.901,20.8] 0.901 20.8 
#6 6 (0.901,20.8] 0.901 20.8 
関連する問題