0

私はこのデータセットを持っていますstructure(list(Color = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("blue", "green", "red" ), class = "factor")), .Names = "Color", row.names = c(NA, -30L ), class = "data.frame")

平均 5 と分散 2 を青に、平均 10 と分散 4 を緑に、平均 100 と分散 15 を赤に割り当てる列を追加したいと思います。

4

1 に答える 1

0

データが例のように並べ替えられている場合は、平均値と std.deviations のベクトルを作成します。次に、各グループMapを呼び出すために使用します。rnorm

mus <- c(5, 10, 100)
sds <- c(2, 4, 15)
nums <- Map(function(n,mu, sd) rnorm(n, mu, sd), table(df1$Color), mus, sds)
df1$rndm <- unlist(nums)
df1
# Color       rndm
# 1   blue   5.048143
# 2   blue   8.159234
# 3   blue   7.029401
# 4   blue   3.298584
# 5   blue   3.388559
# 6   blue   3.125807
# 7   blue   3.428520
# 8   blue   3.659469
# 9   blue   7.881609
# 10  blue   3.483098
# 11 green   5.942954
# 12 green   3.172638
# 13 green  10.872443 

アップデート

ソートせずに置き換えるには、最後の行を次のように変更します。

df1[order(df1$Color),"rndm"] <- unlist(nums)
于 2016-03-11T20:17:46.990 に答える