根据条件创建变量

时间:2017-06-12 20:29:08

标签: r

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)

1 个答案:

答案 0 :(得分:2)

听起来不错。

或者,您可以执行类似

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

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