![](/img/trans.png)
[英]Calculating the rate of each category in a factor variable, by categories in another factor
[英]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.