所以我想计算每个值在矢量中出现的次数,并创建一个EQUAL长度的新矢量,以将其与初始值绑定。所以我的解决方案不能是 table 函数,因为它只返回它们出现的唯一值和时间。我需要在初始向量的每个行中追加其出现次数。我找到了一个解决方案,但我得到了一个大约800k行的大型数据库,运行时间为10分钟。有谁知道如何更有效地执行此任务?我举了一个例子。谢谢
df<-as.data.frame(sample(1:100, 800000, replace = T))
df[2]<-rep(1,nrow(df))
names(df)<-c("Numbers","Count")
df$Count<-pbapply(df,1,function(x) length(which(df$Numbers==df$Numbers[x])))
P.S。我已经习惯了 pbapply 函数来跟踪进度。
答案 0 :(得分:0)
如果您想要计算Number
中每个唯一商品的数量,这在dplyr
library(dplyr)
set.seed(123)
df<-data.frame(Numbers = sample(1:100, 800000, replace = T))
df2 <- df %>%
group_by(Numbers) %>%
mutate(Count = n())
head(df2)
# Numbers Count
# 51 8146
# 49 7961
# 3 8090
# 63 8072
# 80 8017
# 80 8017
答案 1 :(得分:0)
这样可以解决问题:
df<-data.frame(Numbers=sample(1:100, 800000, replace = T))
Count <- ddply(df, .(Numbers), summarize, Count=length(Numbers)) #Unique values and how many times they appear
Indices<-match(df$Numbers, Count$Numbers) #Use match to add counts to data frame
df$Count <- Count$Count[Indices]