计算R中特定值的行百分比

时间:2013-12-09 17:19:55

标签: r percentage

我一直试图找到一种方法来计算R中每行1个计数的比例 例如,在以下数据中。 15090是五分之一,所以他的比例是0.2 在下一行中,他在5票中有4个1,因此比例为0.8。 我需要在计算中使NA被解雇,即不应该包括在分母中。

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? 提前谢谢!

3 个答案:

答案 0 :(得分:2)

prop.table()addmargins()就是这么做的。

答案 1 :(得分: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 :(得分:1)

如果列仅包含01,则可以使用

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

其中dat是数据框的名称。