我对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.所以任何有人可以提供给我指向正确方向的资源或建议都是如此,非常有帮助。对不起,如果这听起来不清楚......我可以尝试澄清,如果有必要。
提前致谢,任何人。
答案 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