【发布时间】:2013-07-30 20:20:15
【问题描述】:
我有一个问题,希望你们中的一些人能帮助我。问题是这样的:对于一个给定的数据帧,它包括一个长度为 n 的向量 y 和一个具有 k 个不同级别的因子 f,我想根据 f 为数据帧分配一个长度为 k 的新变量 z。
例子:
df <- data.frame(y=rnorm(12), f=rep(1:3, length.out=12))
z <- c(-1,0,5)
请注意,我的真实z 已构建为对应于唯一因子水平,这就是length(z) = length(unique(df$f) 的原因。我现在想创建一个长度为 n=12 的向量,其中包含与因子级别 f 对应的 z 的值。 (注意:我的实际因子值没有像上面的例子那样排序,所以只重复向量z 是行不通的),
现在,一个明显的解决方案是在数据框外创建一个向量f,将其与z 合并,然后使用merge。例如,
newdf <- data.frame(z=z, f=c(1,2,3))
df <- merge(df, newdf, by="f")
但是,我需要将这个过程重复数千次,而这个merge-解决方案看起来就像用大炮对微生物进行射击。因此我的问题是:几乎可以肯定有一种更简单、更有效的方法来做到这一点,但我只是不知道怎么做。谁能指出我正确的方向?我正在寻找类似aggregate 或by 的“逆”。
【问题讨论】:
-
您可能希望edit 带有语言标签的问题,以增加它引起能够回答的用户注意的机会。
标签: r merge aggregate expand r-factor