R 如何在筛选的矩阵列中使用apply函数?
创建一个矩阵,其中包含(1)一个指标,(2)一个条件和(3)一个感兴趣的变量xR 如何在筛选的矩阵列中使用apply函数?,r,conditional-statements,apply,mean,R,Conditional Statements,Apply,Mean,创建一个矩阵,其中包含(1)一个指标,(2)一个条件和(3)一个感兴趣的变量x z<-rep(1:10,each=10) set.seed(974); cond=rbinom(100,3,0.5) set.seed(974) ; x=rnorm(100,1,10) All<-cbind(z,cond,x) ; All 如果要获得每组行的平均值,则过滤后的行数不是常数且等于固定数(将根据条件过滤器而变化)根据更新后的帖子,我们可以使用分组变量作为第一列 tapply(AllFilte
z<-rep(1:10,each=10)
set.seed(974); cond=rbinom(100,3,0.5)
set.seed(974) ; x=rnorm(100,1,10)
All<-cbind(z,cond,x) ; All
如果要获得每组行的平均值,则过滤后的行数不是常数且等于固定数(将根据条件过滤器而变化)根据更新后的帖子,我们可以使用分组变量作为第一列
tapply(AllFiltered[,3], AllFiltered[,1], FUN= mean)
根据每个区块的nrows,你每3行做一次colMeans?我不明白这个问题。为什么要为创建
AllFiltered
?它与每10行的平均值有什么关系?您期望的输出与所有这些有什么关系?我们只是在寻找?谢谢您的评论@davidernburg。显然,我对更新我的评论之前使用的奇怪的初始索引感到困惑。我只对变量x感兴趣,并且想在我有10*10行之前计算每个过滤块的x的平均值。在条件之后,我有均值(前3行的x),然后均值(后3行的x),然后均值(后2行的x)。因此,我要求和的行数不是常数。我希望最终得到10个x(感兴趣的变量)的平均值,与之前一样,但这次由于条件==1而过滤。谢谢你的见解@KonstantinosPat您能检查一下这是否对您有效吗?非常感谢您,它确实有效。我不知道分组变量选项。gr我认为@akrun guess应该是正确的。此外,必须强调的是,可以使用taply(All[,3]、list(All[,1]、All[,2])、FUN=mean)
来避免过滤部件,该选项显示每个条件和索引的平均值。@nicola和akrun。这两个答案都有针对性,并解决了我的问题。再次感谢你。
z cond x
[1,] 1 1 -10.5135290
[2,] 2 1 -10.9883098
[3,] 2 1 12.9269151
[4,] 3 1 5.1725988
[5,] 3 1 -1.5633754
[6,] 3 1 -1.3470068
[7,] 4 1 12.6646369
[8,] 4 1 -9.7694997
[9,] 4 1 4.8618008
tapply(AllFiltered[,3], AllFiltered[,1], FUN= mean)