我有一个数据集,我正在尝试使用与特定子集关联的随机值创建一个新变量。
例如,给定数据框:
data(iris)
iris=iris
我想要另一个变量,它将iris$Species
的每个值与一个随机数(0到1之间)相关联。这可以通过创建数据框以迂回的方式完成:
df=data.frame(unique(iris$Species),runif(length(unique(iris$Species))))
将其与原始数据框合并:
iris=merge(iris,df,by.x="Species",by.y="unique.iris.Species.")
这实现了我想要的东西,但它不够优雅。此外,如果我想在不同的变量上多次复制这个过程,这个过程将是繁重的。我希望的是一些快速索引方法,希望看起来像:
iris$Species.unif=runif(length(unique(iris$Species)))[iris$Species]
鉴于R中的索引通常非常灵活,我希望有一些方法可以做到这一点,我不知道。
提前谢谢你。
答案 0 :(得分:0)
您可能想尝试使用级别:
iris <- iris
iris$species_unif <- iris$Species
levels(iris$species_unif ) <- runif(length(levels(iris$Species)))