2013-12-09 67 views
0

我一直在试图找到一种方法来计算R中每行中1个计数的比例。
例如,在以下数据中。 15090有5张选票中的1张,所以他的比例是0.2 在下一排中,他有5张选票中的4张,所以比例是0.8。 我需要让NA在计算中被驳回,即不应将其包含在分母中。计算R中特定值的行百分比

ICPSR   Vote.335 Vote.354 Vote.971 Vote.972 Vote.973 Vote.155 Vote.295 
15090   0  0  0  1  0  NA  NA 
29300   1  1  1  0  1  NA  NA 

什么代码应该在R中,来计算每行的比例为1?
预先感谢您!

+2

你有什么尝试?你能分享你使用过的一些代码,为什么它不起作用吗?就目前而言,这听起来像是你要求我们为你写代码。 – Justin

回答

1

这里使用rowSums矢量化的解决方案:

dat <- dat[,-1] 
rowSums(dat==1,na.rm=TRUE)/rowSums(!is.na(dat)) 
[1] 0.2 0.8 

其中dat

dput(dat) 

structure(list(ICPSR = c(15090L, 29300L), Vote.335 = 0:1, Vote.354 = 0:1, 
    Vote.971 = 0:1, Vote.972 = c(1L, 0L), Vote.973 = 0:1, Vote.155 = c(NA, 
    NA), Vote.295 = c(NA, NA)), .Names = c("ICPSR", "Vote.335", 
"Vote.354", "Vote.971", "Vote.972", "Vote.973", "Vote.155", "Vote.295" 
), class = "data.frame", row.names = c(NA, -2L)) 
2

prop.table()addmargins()做到这一点。

1

如果列包含0 S和唯一1 S,你可以使用

rowMeans(dat[-1], na.rm = TRUE) 
#[1] 0.2 0.8 

其中dat是你的数据帧的名称。