我想将数据子集化为2D数组或矩阵。这就是我尝试过的:
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
。这是正确的,还有更好的方法吗?
答案 0 :(得分:0)
如果要根据特定条件或因素分割数据,可以使用拆分进行分割。假设你有
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