我有三个向量:
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
答案 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()
。下表列出了每个NA
和x
的所有非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