我在R中使用数据框d:
ID <- c("A","A","A","B","B")
eventcounter <- c(1,2,3,1,2)
numberofevents <- c(3,3,3,2,2)
d <- data.frame(ID, eventcounter, numberofevents)
> d
ID eventcounter numberofevents
1 A 1 3
2 A 2 3
3 A 3 3
4 B 1 2
5 B 2 2
其中numberofevents
是每个eventcounter
的{{1}}中的最高值。
目前,我正在尝试创建一个额外的向量ID
。
如果是z <- c(6,6,6,3,3)
,则应计算numberofevents == 3
,同等地计算sum(1:3)
。
如果是3 + 2 + 1 = 6
,则应该numberofevents == 2
平均计算sum(1:2)
。
使用大量数据,我认为创建这个额外的向量可能很方便
通过使用R 2 + 1 = 3
中的sum函数,即
d$z<-sum(1:d$numberofevents)
和
sum(1:3) # for the rows 1-3
但是,我总是收到这个警告:
sum(1:2) # for the rows 4-5.
答案 0 :(得分:3)
您可以尝试ave
d$z <- with(d, ave(eventcounter, ID, FUN=sum))
或使用data.table
library(data.table)
setDT(d)[,z:=sum(eventcounter), ID][]
答案 1 :(得分:1)
尝试在R。
中使用apply sapply或lapply函数sapply(numberofevents, function(x) sum(1:x))
它对我有用。