【发布时间】:2016-02-11 09:08:30
【问题描述】:
再次,我在 R 中完全是新手,并试图对我面临的问题进行排序。 我有一个数据集“ds”,列“组”和“匹配” 我需要计算每组列匹配组的百分比 第一组是 001 第二组是 002,第三组是 003,依此类推。
我现在有一个数据:
>ds
group col1 col2 match
001 F M FALSE
001 F M FALSE
001 F M FALSE
002 F M FALSE
002 M M TRUE
003 M F FALSE
003 F F TRUE
003 F F TRUE
003 F M FALSE
004 F M FALSE
005 F F TRUE
005 M F FALSE
005 M M TRUE
006 M M TRUE
006 F M FALSE
006 F M FALSE
006 F M FALSE
006 F M FALSE
006 F F TRUE
006 F M FALSE
006 F M FALSE
Desired result:
group | col1 | col2 | match | mismatch % | Match %
001 F M FALSE 1.0 0
001 F M FALSE
001 F M FALSE
002 F M FALSE 0.50 0.50
002 M M TRUE
003 M F FALSE 0.50 0.50
003 F F TRUE
003 F F TRUE
003 F M FALSE
004 F M FALSE 1.0 0
005 F F TRUE 0.66 0.33
005 M F FALSE
005 M M TRUE
006 M M TRUE
006 F M FALSE 0.75 0.25
006 F M FALSE
006 F M FALSE
006 F M FALSE
006 F F TRUE
006 F M FALSE
006 F M FALSE
我知道如何计算整列的 if:
percentage <- table(ds$match)
cbind(percentage,prop.table(percentage))
但不能将它用于我的解决方案显示更高
谢谢
【问题讨论】:
-
你只想要
prop.table(table(ds$group,ds$match), 1)吗? -
您好 theletemail,感谢您的回答,看来您的解决方案确实按组计算列匹配的百分比,但问题是:) 如何以所需格式设置它?跨度>
-
您可以执行类似
ds$match_per <- with(ds, ave(match, group, FUN=function(x) c(sum(x)/length(x), rep(NA,length(x)-1))))的操作,但拥有所有空单元格似乎有点浪费。 -
感谢 theletemail,它可以工作,但奇怪的是,有时它计算为 0.0000000 有时为 0 :) 与 1 相同,1.0000000 看不到依赖关系.....你说得对行,但我需要全部格式化以保持行数,以便稍后添加变量
标签: r statistics