gpt4 book ai didi

反向聚合/by?

转载 作者:行者123 更新时间:2023-12-04 04:47:39 24 4
gpt4 key购买 nike

我有一个问题,希望你们中的一些人可以帮助我。问题是:对于包含长度为 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 的值对应于因子水平 f . (注意:我的真实因子值不像上面的例子那样排序,所以只重复向量 z 是行不通的),

现在,一个明显的解决方案是创建一个向量 f在数据框外,将其与 z 合并然后使用 merge .例如,
 newdf <- data.frame(z=z, f=c(1,2,3))
df <- merge(df, newdf, by="f")

但是,我需要重复这个过程几千次,而这个 merge - 解决方案似乎是在微生物上用大炮射击。因此我的问题是:几乎肯定有一种更简单、更有效的方法来做到这一点,但我不知道如何做到。有人能指出我正确的方向吗?我正在寻找类似 aggregate 的“逆”的东西或 by .

最佳答案

假设 z 中的值对应于 f 级

df <- data.frame(y=rnorm(12), f= sample(c("a","b","c"),12,replace=T))
z <- c(-1,0,5)
df$newz<-z[df$f]

如果这不清楚:这是有效的,因为因子以整数形式存储在封面下。当您使用该因子向量索引 z 时,您实际上是使用底层整数索引,这些整数指向该因子值的正确 z 值。

关于反向聚合/by?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17951217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com