如何在r中编写复杂的by函数
我的数据库是:如何在r中编写复杂的by函数,r,R,我的数据库是: Time Sex Weight Time.midnight 0005 1 3837 5 0104 1 3334 64 0118 2 3554 78 0155 2 3838 115 0257 2 3625 177 0405 1 2208 245 0407 1 1745 247 0
Time Sex Weight Time.midnight
0005 1 3837 5
0104 1 3334 64
0118 2 3554 78
0155 2 3838 115
0257 2 3625 177
0405 1 2208 245
0407 1 1745 247
0422 2 2846 262
0431 2 3166 271
0708 2 3520 428
0735 2 3380 455
0812 2 3294 492
0814 1 2576 494
其中包含在医院24小时内出生的婴儿的出生时间、性别和出生体重。变量如下:
时间:24小时时钟上记录的出生时间/
性别:孩子的性别(1=女孩,2=男孩)/
体重:出生体重(克)/
Time.midnight:每次出生后午夜后的分钟数
现在我想计算一下体重小于3公斤的女孩的比例是多少?与男孩的相应比例相比
我想使用by()函数,但下面的命令返回了错误
by(Weight, Sex, length(which(Weight<3000)))
by(体重、性别、身高)(体重
by(df, df$Sex, function(x) sum(x$Weight < 3000) / length(x$Weight))
#df$Sex: 1
#[1] 0.6
#------------------------------------------------------------
#df$Sex: 2
#[1] 0.125
样本数据
<代码> DF R不认为列名是第一类对象。您可能想用(dByNoX,…)包装<代码>。
尽管代码的逻辑似乎与我对您的自然语言描述的理解不一致,但它与此相关。@Lili.Y通常是这样。@Lili.Y:建议您包括再现错误所需的所有设置和代码。attach
调用特别相关。错误消息应完整报告。感谢您的支持你的建议解决了!谢谢。正确答案是(mydata,性别,函数(x)和(x$Weight<3000)/长度(Weight))
with(df, tapply(Weight, Sex, function(x) sum(x < 3000) / length(x)))
# 1 2
#0.600 0.125
df <- read.table(text =
"Time Sex Weight Time.midnight
0005 1 3837 5
0104 1 3334 64
0118 2 3554 78
0155 2 3838 115
0257 2 3625 177
0405 1 2208 245
0407 1 1745 247
0422 2 2846 262
0431 2 3166 271
0708 2 3520 428
0735 2 3380 455
0812 2 3294 492
0814 1 2576 494", header = T)