我一直试图找到一种方法来计算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? 提前谢谢!
答案 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)
如果列仅包含0
和1
,则可以使用
rowMeans(dat[-1], na.rm = TRUE)
#[1] 0.2 0.8
其中dat
是数据框的名称。