cut
関数を使用して、最大/最小範囲を使用してデータをグループに分割しています。ここで私が使用していたコードの例を次に示します。値が属するファクタグループを特定する方法を教えてください。
# sample data frame - used to identify intial groups
testdf <- data.frame(a = c(1:100), b = rnorm(100))
# split into groups based on ranges
k <- 20 # number of groups
# split into groups, keep code
testdf$groupCode <- cut(testdf$b, breaks = k, labels = FALSE)
# store factor information
testdf$group <- cut(testdf$b, breaks = k)
head(testdf)
私は別のデータフレームまでを分割する識別要因のグループ化を使用したいが、私はこれに対処するための要素を使用するかどうかはわかりません。私は次のように私のコードの構造は、大きくすべきだと思います。
# this is the data I want to categorize based on previous groupings
datadf <- data.frame(a = c(1:100), b = rnorm(100))
datadf$groupCode <- function(x){return(groupCode)}
私は次のように係数データが構造体であることがわかり、私はそれを適切に使用する方法がわからない:
testdf$group[0]
factor(0)
20 Levels: (-2.15,-1.91] (-1.91,-1.67] (-1.67,-1.44] (-1.44,-1.2] ... (2.34,2.58]
2つの関数私が使って実験されていること(ただし、動作しません)以下の通りである。
# get group code
nearestCode <- function(number, groups){
return(which(abs(groups-number)== min(abs(groups-number))))
}
nearestCode(7, testdf$group[0])
をし、またwhich
機能を使って実験します。
which(7, testdf$group[0])
グループ化を識別して別のデータフレームに適用する最も良い方法は何ですか?
マイナーポイント: 'return 1'はおそらくタイプミスですか?そしてあなたは本当に 'lapply'を使って列に単一の値を代入していますか、それとも別の意味ですか? – joran
@joran - 良い点;申し訳ありませんが 'return 1'はタイプミスでしたが、私は擬似コードをスケッチしようとしていました。 'lapply'は私が編集した使い方の誤解でした。 – djq
データの範囲を等しい長さに分割したい場合は、 'span <-diff(range(x));を使用します。 breaks = seq.int(min(x)-span/1000、max(x)+ span/1000、by = span/n) '。次に、数値ベクトルを保存します。これは 'cut'を行う方法の一種で、' cut.default'とタイプすると実際のコードを見ることができます。 –