用R计算列中值的数量

时间:2014-06-19 15:14:19

标签: r aggregate apply

我有三个向量:

x <- c(1,1,1,1,1, 2,2,2,3,3,  3,3,3,4,4,  5,5,5,5,5 )
y <- c(2,2,1,3,2, 1,4,2,2,NA, 3,3,3,4,NA, 1,4,4,2,NA)
w <- c(1,45,NA,45,NA,45,41,45,96,25,12,NA,7,NA,4,45,12,45,32,56)

如何找到每个X的W(不计算NA)和Y = 1的值的数量?例如,对于x = 1,number为0;对于x = 2,数字为1;对于x = 3,数字为0;对于x = 4,数字为0;对于x = 5,数字为1

2 个答案:

答案 0 :(得分:3)

table( !is.na(w) & y==1 , x )
#       x
#        1 2 3 4 5
#  FALSE 5 2 4 1 3
#  TRUE  0 1 0 0 1

table( !is.na(w) & y==1 , x )["TRUE",]
#1 2 3 4 5 
#0 1 0 0 1 

要为所有y值获取此值,您仍然可以使用table()。下表列出了每个NAx的所有非y值的数量...

table( x , y , ! is.na(w) )[,,"TRUE"]
#   y
#x   1 2 3 4
#  1 0 2 1 0
#  2 1 1 0 1
#  3 0 1 2 0
#  4 0 0 0 0
#  5 1 1 0 2

答案 1 :(得分:-3)

df<-data.frame(x,y,w)
nrow(df[which(x==1 & y==1 & !is.na(w)),])

df<-data.frame(x,y,w)
aggregate(w ~ x, data=df[which(df$y==1 & !is.na(df$w)),], FUN=length)

第二个给你一张表

  x w
1 2 1
2 5 1