2014-06-19 67 views
-1

計算列值的數目我有三個載體:條件爲R

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) 

如何找到的值的數目在W(不`噸數NA)對於每個X和Y = 1 ?例如,對於x = 1,數字爲0;對於x = 2,數字是1;對於x = 3,數字爲0;對於x = 4,數字爲0;對於x = 5的數量是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 
+0

我不明白這是如何被接受的答案。它沒有做OP所要求的。無論是解決方案。 –

+0

它做OP所要求的...第一個返回特定x值的數字。第二個返回一個表。該表沒有x = 1,3,4,因爲這些值是0. – Badoe

+0

第二個公式對我來說更好。結果中有兩行,但如何爲其他行生成NA? – user3742663

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()。下表爲每個xy所有非NA值的數量...

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 
+0

我意味着Y == 1,而不是W – user3742663

+0

謝謝。但是如何解決同樣的問題,不僅對於y = 1而且對於y的所有值按降序排列(4,3,2,1)?所以輸出應該包含20行,包括NAs。 – user3742663

+0

@ user3742663這是一個不同的問題,但看到編輯! –