【问题标题】:Generating new variable values by subset按子集生成新变量值
【发布时间】:2014-02-01 00:14:47
【问题描述】:

我有一个数据集,我正在尝试使用与特定子集关联的随机值创建一个新变量。

例如,给定数据框:

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 中的索引通常非常灵活,我希望有一些我不知道的方法。

提前谢谢你。

【问题讨论】:

    标签: r merge indexing subset


    【解决方案1】:

    您可能想尝试使用关卡:

    iris <- iris
    iris$species_unif <- iris$Species
    levels(iris$species_unif ) <- runif(length(levels(iris$Species)))
    

    【讨论】:

      猜你喜欢
      • 2022-08-15
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多