数学之路(2)-数据分析-R基础(26)

来源:互联网 发布:雷巴的冒险修改数据 编辑:程序博客网 时间:2024/06/06 16:43

(3)不定数量的函数参数

> mycount<-function(...){

+ temp=0

+ for (i in c(...)){

+ temp=temp+1

+ }

+ temp

+ }

> mycount(11,22,33)

[1] 3

> mycount(11,22,33,66)

[1] 4

> mycount(11,22,66)

[1] 3

(4)内嵌函数

允许在函数内定义函数,使用方法和定义函数一样,只不过整个函数体要定义在另一个函数体内 。

5、统计模型基本应用

(1)分析数据分布情况

我们分析一下某老年常见病数据,下面是数据格式

年龄

疾病名称

急腹症

肿瘤

71

肺恶性肿瘤

0

1

75

直肠恶性肿瘤

0

1

75

肠梗阻

1

0

71

急性胆管炎

1

0

77

胆管恶性肿瘤

0

1

............

......................................

................

.............

加载数据后,查看老年病的老人年龄分布情况及概率密度分布

> read.table("h:/my_docs/aged_patients.csv",header=TRUE,sep=",")->agedpatients

 > hist(agedpatients$年龄)


> hist(agedpatients$年龄,prob=TRUE)

> lines(density(agedpatients$年龄))

> rug(agedpatients$年龄)



本博客所有内容是原创,未经书面许可,严禁任何形式的转载。

ttp://blog.csdn.net/u010255642


> min(agedpatients$年龄)

[1] 60

> max(agedpatients$年龄)

[1] 90

> mean(agedpatients$年龄)

[1] 69.09839

> var(agedpatients$年龄)

[1] 38.60801

63~72这个阶段的老人注意坚持运动,保持健康,这个年龄段是这2类老年病的高发时间段, 发生概率较大。从6090的老人都有可能患上这2类老年病,年纪的平均值是69岁,标准差为38.60801比较大,看来这2个老年病在老人中发生的比较普遍。

我们再按年龄分类汇总肿瘤和急腹症的数量

attach(agedpatients)

> tapply(肿瘤,年龄,sum)

60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 87 88 90 

19 26 26 28 21 35 37 22 21 23 29 26 31 16 19 12 13 19  8  5  4  3  7  2  1  1  0  3  1 

> tapply(急腹症,年龄,sum)

60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 87 88 90 

 2  0  0  2  0  0  1  0  1  2  4  1  1  0  3  1  2  2  0  2  0  1  0  1  0  1  2  0  0 

分年龄统计肿瘤患者的数量

> table(factor(cut(agedpatients$年龄[agedpatients$肿瘤==1],5)))

(60,66] (66,72] (72,78] (78,84] (84,90] 

155     158     118      22       5 

分年龄统计急腹症患者的数量

> table(factor(cut(agedpatients$年龄[agedpatients$急腹症==1],5)))

  (60,65.4] (65.4,70.8] (70.8,76.2] (76.2,81.6]   (81.6,87] 

          4           8           8           5           4