2016-08-04 44 views
1

我要計算一個事件是否發生,如果發生了,它有沒有後果。讓我們假設這是我的數據有一定條件的變量計數

#mydata 

a b c d consequence 
0 0 1 1 0 
1 0 1 1 1 
1 1 1 0 0 
0 0 0 1 0 

因此,對於每個變量我計算的變量發生多少次又多少次這個變量引起的結果:對於「一個」

numberofa=length (subset(mydata, mydata$a==1)) 
    numberofaeffective= Length (subset(mydata, mydata$a==1 $ mydata$consequence=1)) 

如何爲例我可以編寫一個程序來計算每個變量的這兩個指標嗎?

#expected output 

variable count count-with-effect 
a  2   1 
b  1   0 
c  3   1 
d  3   1 
+0

所以,「結果」是預期的輸出列?根據您的代碼,它將「a」爲1的行進行子集化,然後再基於column1進行子集化。我不確定預期的輸出是什麼。 – akrun

回答

1

我們可以做到這一點與邏輯載體sum

sum(dts$a==1) 
#[1] 2 

with(dts, sum(a==1 & consequence == 1)) 
#[1] 1 

如果我們需要它的每個變量(即 'a' 到' d')

colSums(dts[1:4] == 1) 
# a b c d 
# 2 1 3 3 

和第二與「後果」

colSums(dts[1:4] == 1 & (dts[5] == 1)[row(dts[1:4])]) 
#a b c d 
#1 0 1 1 

如果我們需要以特定的格式,我們可以gather數據集爲「長」格式,然後通過操作和summarise做GROUP BY sum明'價值'列

library(dplyr) 
library(tidyr) 
gather(dts, variable, value, -consequence) %>% 
      group_by(variable) %>% 
      summarise(count = sum(value), count_with_effect = sum(value & consequence)) 
# variable count count_with_effect 
#  <chr> <int>    <int> 
#1  a  2     1 
#2  b  1     0 
#3  c  3     1 
#4  d  3     1 
+0

@MehdiFarhangian我更新了帖子 – akrun