我有一个问题,希望你们中的一些人能帮助我。问题是这样的:对于包含长度为 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 的向量,其中包含z
对应于因子 level 的值f
。(注意:我的实际因子值不像上面的例子那样排序,所以只是重复向量是z
行不通的),
f
现在,一个明显的解决方案是在数据框之外创建一个向量,将其z
与merge
. 例如,
newdf <- data.frame(z=z, f=c(1,2,3))
df <- merge(df, newdf, by="f")
然而,我需要重复这个过程几千次,而这个merge
解决方案看起来就像用大炮对微生物进行射击。因此我的问题是:几乎可以肯定有一种更简单、更有效的方法来做到这一点,但我只是不知道怎么做。谁能指出我正确的方向?我正在寻找类似 or 的“逆”的aggregate
东西by
。