如何在过滤后的矩阵列中使用应用函数?
How to use apply function in a filtered matrix column?
创建一个矩阵,其中包含 (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
使用整个数据集,我可以用 colsums 或 apply 计算感兴趣的数量。例如每 10 行的平均值。
colSums(matrix(as.numeric(All[,3]), nrow=10))/10
apply(matrix(as.numeric(All[,3]), nrow=10),2,mean)
# Filtered dataset.
AllFiltered<-All[All[,2]==1,]
现在,当我执行过滤时,nrow 不是常量,例如(1,2,3,3)。有没有办法对每组单独的行过滤数据执行与上述相同的操作?
Allfiltered 示例
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
想得到每组行的平均值,其中过滤后的行数不是常数而是等于固定数(会根据条件过滤器而变化)
基于更新后的post,我们可以使用分组变量作为第一列
tapply(AllFiltered[,3], AllFiltered[,1], FUN= 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
使用整个数据集,我可以用 colsums 或 apply 计算感兴趣的数量。例如每 10 行的平均值。
colSums(matrix(as.numeric(All[,3]), nrow=10))/10
apply(matrix(as.numeric(All[,3]), nrow=10),2,mean)
# Filtered dataset.
AllFiltered<-All[All[,2]==1,]
现在,当我执行过滤时,nrow 不是常量,例如(1,2,3,3)。有没有办法对每组单独的行过滤数据执行与上述相同的操作?
Allfiltered 示例
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
想得到每组行的平均值,其中过滤后的行数不是常数而是等于固定数(会根据条件过滤器而变化)
基于更新后的post,我们可以使用分组变量作为第一列
tapply(AllFiltered[,3], AllFiltered[,1], FUN= mean)