表r中的描述性统计数据用于多个变量

时间:2014-09-18 19:35:32

标签: r statistics

我对R来说是全新的,我会感谢任何人在帮助我完成这些可能简单的任务时所困扰的时间。我现在所有可用的资源都处于亏损状态,我不确定从哪里开始。

我的数据看起来像这样:

    subject sex age nR  medL    medR        meanL       meanR   pL  ageBin
1   0146si  1   67  26  1   1   1.882353    1.5294118   0.5517241   1
2   0162le  1   72  5   2   1   2           1.25        0.6153846   1
3   0323er  1   54  30  2.5 3   2.416667    2.5         0.4915254   0
4   0811ne  0   41  21  2   2   2           1.75        0.5333333   0
5   0825en  1   44  31  2   2   2.588235    1.8235294   0.5866667   0

虽然实际数据在变量中有更多,更多的主题。

我需要做的第一件事是比较' ageBin'值。 0 = 60岁以下,1 = 60岁以上。我想比较这两组之间的统计数据。所以我想我需要的第一件事就是能够识别不同的ageBin值并将它们分成两行。

然后我需要做一些事情,比如计算两组中值的频率(即1和0的实例数),以及'年龄的平均值。变量,年龄变量的中位数,男性的数量(即性别= 1),平均值L的平均值等。简单的事情就是这样。我只想让他们在一张桌子上。

所以潜在表的一个例子可能是

            n   nMale   mAge
ageBin 0    14      x     x
ageBin 1    14      x     x

我可以轻松地在SPSS甚至Excel中完成这些工作...我真的很想开始使用R.所以任何有人可以提供给我指向正确方向的资源或建议都是如此,非常有帮助。对不起,如果这听起来不清楚......我可以尝试澄清,如果有必要。

提前致谢,任何人。

2 个答案:

答案 0 :(得分:1)

尝试by功能:

如果您的数据框名为df

by(data=df, INDICES=df$ageBin, FUN=summary)

答案 1 :(得分:1)

使用plyr()包拆分数据结构,然后应用函数将所有结果组合在一起。

install.packages("plyr") # install package from CRAN
library(plyr) # load the package into R

dd <- list(subject=c("0146si", "0162le", "1323er", "0811ne", "0825en"),
       sex = c(1,1,1,0,1),
       age = c(67,72,54,41,44),
       nR = c(26,5,30,21,31),
       medL = c(1,2,2.5,2,2),
       medR = c(1,1,3,2,2),
       meanL = c(1.882352,2,2.416667,2,2.588235),
       meanR = c(1.5294118,1.25,2.5,1.75,1.8235294),
       pL = c(0.5517241,0.6153846,0.4915254,0.5333333,0.5866667),
       ageBin = c(1,1,0,0,0))

dd <- data.frame(dd) # convert to data.frame

使用ddply功能,您可以执行诸如计算两组中值的频率之类的事情

ddply(dd, .(ageBin), summarise, nMale = sum(sex), mAge = mean(age))

ageBin nMale     mAge
0      2         46.33333
1      2         69.50000

以下是Sean Anderson非常有用的资源,可以快速了解plyr软件包 Hadley Wickham提供了一个更全面的极其资源,可以找到包作者here