2017-06-12 59 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