r语言 - 如何创建一个矩阵/子集的二维数组



我想把我的数据子集成一个二维数组或矩阵。这是我尝试过的:

mat <- array(, c(3,3))
for(i in 1:3) {
  mat[i,1] <- subset(df, ...)
  mat[i,2] <- subset(df, ...)
  mat[i,3] <- subset(df, ...)
}

但是我得到了警告:number of items to replace is not a multiple of replacement length。这是正确的吗?有没有更好的方法?

如果您希望根据特定条件或因素拆分数据,可以使用split。假设你有

dd<-data.frame(
   a=runif(100),
   b=runif(100),
   c=sample(c("x","y","z"), 100, replace=T),
   d=sample(c("M","F"), 100, replace=T)
)

然后你可以用

拆分你的数据
subs<-split(dd, dd$c)

创建一个包含三个元素的列表,其中第一个包含所有带有"x"的行,第二个包含所有带有"y"的行,第三个包含所有带有"z"的行。您也可以对变量的组合执行此操作

subs<-split(dd, interaction(dd$c, dd$d))

如果你想的话,你可以对每个子集运行回归或者其他的

reg <- lapply(subs, function(x) lm(b~a, x))
reg[[1]] #to see the results for the first group

最新更新