我想把我的数据子集成一个二维数组或矩阵。这是我尝试过的:
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