簡體   English   中英

為變量的每個類別計算一個函數(循環函數)

[英]Calculating a function for each category of a variable (Loop function)

如何為具有相同索引的z每個級別計算sum(A$Freq)/sum(A$pi) (i=1,2,3) 我的意思是,當z=regression1我們要計算sum(A$Freq)/sum(A$p1) ;當z=regression2我們需要計算sum(A$Freq)/sum(A$p2) ,最后當z=regression3我們需要計算sum(A$Freq)/sum(A$p3) 由於我的原始數據集非常大且z具有許多級別,因此我正在尋找使用循環功能的解決方案。

Freq<-seq(100,126,1)
x<-seq(1,27,1)
z<-rep(c('Regression1','Regression2','Regression3'),each = 3, times=3)
p1<-seq(2,28,1)
p2<-seq(10,36,1)
p3<-seq(0,26,1)
s<-data.frame(x,Freq,z,p1,p2,p3)

對需要評估的索引使用sapply函數:

res <- sapply(1:3, 
    FUN=function(x) sum(s[grepl(x, s$z),"Freq"]) / sum(s[grepl(x, s$z),paste0("p",x)]))
res
[1] 9.166667 4.913043 7.250000

grepl(x, s$z)s行子集grepl(x, s$z)包含相應索引的行。
paste0("p",x)為相應的索引創建列的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM