gpt4 book ai didi

r - 创建指标

转载 作者:行者123 更新时间:2023-12-04 10:54:37 25 4
gpt4 key购买 nike

我想为矩阵创建一个数字指标,这样对于一个变量中的每个唯一元素,它会根据另一个变量中的元素创建一个长度序列。例如:

frame<- data.frame(x = c("a", "a", "a", "b", "b"), y = c(3,3,3,2,2))
frame
x y
1 a 3
2 a 3
3 a 3
4 b 2
5 b 2

指标 z 应如下所示:

  x y z
1 a 3 1
2 a 3 2
3 a 3 3
4 b 2 1
5 b 2 2

非常感谢任何和所有帮助。谢谢。

最佳答案

没有

frame$z <- with(frame, ave(y,x,FUN=seq_along) )
frame

# x y z
#1 a 3 1
#2 a 3 2
#3 a 3 3
#4 b 2 1
#5 b 2 2

data.table 版本可能如下所示(感谢@mnel):

#library(data.table)
#frame <- as.data.table(frame)
frame[,z := seq_len(.N), by=x]

我最初的想法是使用:

frame[,z := .SD[,.I], by=x]

其中 .SD 指的是 data.table 拆分 by x 的每个子集。 .I 返回整个 data.table 的行号。因此,.SD[,.I] 返回每个组内的行号。尽管正如@mnel 指出的那样,与其他方法相比,这种方法效率低下,因为每个组都需要将整个 .SD 加载到内存中才能运行此计算。

关于r - 创建指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868833/

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