R表xtab:基于排除因子的列联表

R表xtab:基于排除因子的列联表,r,crosstab,R,Crosstab,假设我想为手机和性别创建一个列联表,并设置以下数据集: df<-data.frame(read.table(header = TRUE, text = "Age Gender Mobile 13 Male 1 14 Female 1 18 Female 1 13 Male 1 13 Female 1 14 Female 0 16 Male 1 16 Female 0 16 Male 0 20 Male 0 14 Mal

假设我想为手机和性别创建一个列联表,并设置以下数据集:

df<-data.frame(read.table(header = TRUE, text = 
"Age    Gender  Mobile
13  Male    1
14  Female  1
18  Female  1
13  Male    1
13  Female  1
14  Female  0
16  Male    1
16  Female  0
16  Male    0
20  Male    0
14  Male    0
13  Female  0
25  Male    1
13  Female  0
24  Female  0"))


有什么想法吗?谢谢

我们需要
年龄>18的行进行子集
,如果我们需要在子集设置后删除未使用的级别,请使用
液滴级别
,使用
xtabs
获取表格并转换成比例

prop.table(xtabs(~Mobile+Gender, droplevels(df[df$Age>18,])))

只需在第一次尝试中添加一个
,也可以达到以下目的:

> prop.table(xtabs(~ Mobile + Gender, df[df$Age > 18,]))
      Gender
Mobile       Female         Male
     0 0.3333333333 0.3333333333
     1 0.0000000000 0.3333333333
无需降低未出现在表中的因素水平:

> prop.table(xtabs( ~ Mobile + Gender, droplevels(df[df$Age > 18,])))
      Gender
Mobile       Female         Male
     0 0.3333333333 0.3333333333
     1 0.0000000000 0.3333333333

! 再说一次,你是对的,伙计!感谢您的更正和快速回复!干杯
prop.table(xtabs(~Mobile+Gender, df))[df$Age>18]
prop.table(xtabs(~Mobile+Gender, droplevels(df[df$Age>18,])))
> prop.table(xtabs(~ Mobile + Gender, df[df$Age > 18,]))
      Gender
Mobile       Female         Male
     0 0.3333333333 0.3333333333
     1 0.0000000000 0.3333333333
> prop.table(xtabs( ~ Mobile + Gender, droplevels(df[df$Age > 18,])))
      Gender
Mobile       Female         Male
     0 0.3333333333 0.3333333333
     1 0.0000000000 0.3333333333