2017-06-12 97 views
-1

iris數據集爲例,我試圖創建一個新的變量,該變量具有不同的物種分佈。根據條件創建變量

所以,我想創建new.variable,基於隨機正態分佈,但參數將是不同的每個物種。這是我最近的嘗試。我知道我可以拆分數據集,添加變量,然後重新組合,但似乎沒有必要。

set.seed(42) 
iris$new.variable <- 0 
iris$new.variable[iris$Species == 'setosa'] <- rnorm(nrow(iris[iris$Species == 'setosa']), 5, 1) 
iris$new.variable[iris$Species == 'versicolor'] <- rnorm(nrow(iris[iris$Species == 'versicolor']), 10, 2) 
iris$new.variable[iris$Species == 'virginica'] <- rnorm(nrow(iris[iris$Species == 'virginica']), 20, 3) 

回答

2

聽起來對我很好。

或者,你可以不喜歡

mns <- c(5, 10, 20) 
sds <- 1:3 
specNum <- as.numeric(iris$Species) 

iris$new.variable <- rnorm(nrow(iris), mns[specNum], sds[specNum]) 
+0

是啊...當然。這工作完美。仍然困惑爲什麼我不能一次只替換一個子集......但是這解決了這個問題。謝謝。 – pyll