私は基本的にRソフトウェアを使うのが初めてです。列に値を繰り返すためのRコード
Excelの繰り返しコード(数値/カテゴリ)の一覧があります。私は同じコードが同じ値を得る別の列の値を(ランダムに)追加する必要があります。
Codes Value
1 122
1 122
2 155
2 155
2 155
4 101
4 101
5 251
5 251
ありがとうございます。
私は基本的にRソフトウェアを使うのが初めてです。列に値を繰り返すためのRコード
Excelの繰り返しコード(数値/カテゴリ)の一覧があります。私は同じコードが同じ値を得る別の列の値を(ランダムに)追加する必要があります。
Codes Value
1 122
1 122
2 155
2 155
2 155
4 101
4 101
5 251
5 251
ありがとうございます。
我々はmatch
を使用することができます。
n <- length(code0 <- unique(code))
value <- sample(4 * n, n)[match(code, code0)]
またはfactor
:
n <- length(unique(code))
value <- sample(4 * n, n)[factor(code)]
発生するランダム整数は1と4 * n
の間です。番号4
は任意です。 100
を入力することもできます。
例
set.seed(0); code <- rep(1:5, sample(5))
code
# [1] 1 1 1 1 1 2 2 3 3 3 3 4 4 4 5
n <- length(code0 <- unique(code))
sample(4 * n, n)[match(code, code0)]
# [1] 5 5 5 5 5 18 18 19 19 19 19 12 12 12 11
コメント
上記code
を容易にソートまたは連続した値を取っていないと仮定すると、最も一般的な治療を与えます。
code
が(関係なく、それは必要なもの値)にソートされていない場合、我々はまた、rle
を使用することができます。
if (!is.unsorted(code)) {
n <- length(k <- rle(code)$lengths)
value <- rep.int(sample(4 * n, n), k)
}
code
が連続した値1, 2, ..., n
(必ずしもソートされていない)を取る場合、私たちはmatch
またはfactor
をスキップすることができますし、操作を行います。
n <- max(code)
value <- sample(4 * n, n)[code]
さらに予告:code
が数字ではなくカテゴリになっていない場合は、match
とfactor
の方法でも機能します。あなたはまた、次のされて何ができるか
、それはおそらく、初心者にとってより直感的である:
data <- data.frame('a' = c(122,122,155,155,155,101,101,251,251))
duplicates <- unique(data)
duplicates[, 'b'] <- rnorm(nrow(duplicates))
data <- merge(data, duplicates, by='a')
ありがとうございました!それはうまくいった:) – icychamp
はこれを試してみました!それは完全に働いた!ありがとうございました。 – icychamp
私のコード変数が文字の場合は動作しますか?そして、私のデータフレームが上記の2つの列だけでなく、他の列Bを導入したときは? – icychamp