2015-02-09 81 views
0

我有5个分类变量:年龄(5个级别),性别(2个级别),区域(4个级别),qmat(5个级别)和qsoc(5个级别),共1000个独特的组合。每个唯一的组合具有相应的数据值(例如种群大小)。我想将这些数据分配给一个1000 x 6表格,其中前五列包含年龄,性别,区域,qmat,qsoc指数,第6列保存数据值。R将分类变量分配到矩阵

我想避免使用嵌套for循环在R中效率低下(我的一些数据集将有超过1000个独特的组合)。我知道R中有很多用于并行操作的工具(但我不熟悉它们)。有没有一种有效的方法来使用并行/矢量操作来执行上述变量赋值?任何建议或参考将不胜感激。

+0

你可以显示几行数据集和预期结果。也许'lst < - split(df,list(df $ age,df $ sex,df $ zone,df $ qmat,df $ qsoc),drop = TRUE); names(lst)< - yournames; list2env(lst,envir = .GlobalEnv)' – akrun 2015-02-09 18:26:27

+1

通常的数据结构是data.frame。在机器学习算法中也常见的是使用整数来表示离散水平的矩阵。目前这个问题太模糊了,没有描述预期的处理过程和一个例子。 – 2015-02-09 18:50:42

回答

0

很难理解您的原始数据的样子,但假设您的数据在数据框上,您可能需要使用aggregate()

# simulating a data frame 
set.seed(1) 
N = 9000 
df = data.frame(pop=rnorm(N), 
       age=sample(1:5, N, replace=T), 
       sex=sample(1:2, N, replace=T) 
      ) 

# 'aggregate' this data frame by 'age' and 'sex' 
newData = aggregate(pop ~ age + sex, data=df, FUN=sum) 
0

R函数expand.grid()将解决我的问题,例如, expand.grid(列表(年龄,性别,区域,qmat,qsoc))

感谢所有回复,我对我的问题措辞中任何可能的模糊性表示歉意。