2016-04-25 216 views
0

我需要得到我的数据集的多个变量对绝对频率,所以我用这个代码,以“循环”的xtabs命令:适用于相对频率的绝对频率(xtabs)?

apply(table[,2:17], 2, function(x) xtabs(~tablel$variable+x)) 

它能正常工作,并通过可变给我的绝对频率。但是,我现在需要从这些行中获得相对频率,我无法弄清楚。

我可以以某种方式在循环中包含相对频率计算吗?或者我必须创建一个新的数据集(以及如何?我似乎无法获得R的绝对频率)。

下面是我用代码得到的一个变量频率的例子。

$SEM 
      x 
     MN   sem1  sem2  sem3 
     N1   227  130   18 
     N10   0   2   7 
     N11   9   7   5 
     N12   29   21   1 
     N2   23   14   2 
     N3   19   7   4 
     N4   12   17   0 
     N5   18   36   3 
     N6   22   13   7 
     N8   1   39   0 
     N9   0   2   5 
+0

'吨(申请(SEM,1,功能(I)I /总和(I)))'? – Sotos

+0

嗯,我无法得到那个工作,但我明白你的意思。但是,这将计算出这个变量$ SEM中的频率,但是我有16个这样的小“表”,我想知道是否可以将它们全部结合起来计算频率。 – ghostmom

+0

你有你的表在列表中? – Sotos

回答

1

我们可以通过列表应用一个函数。假设与16个数据帧中的列表被称为lst然后,

lapply(lst, function(i) t(apply(i[,-1], 1, function(j) j/sum(j)))) 
+1

它的工作!我修改了一下,所以解决问题的代码是lapply(x,function(i)t(apply(i [drop = F],1,function(j)j/sum(j))))。非常感谢! – ghostmom