2016-04-03 67 views
1

我是R的新手。我一直在關於這個的Stack Overflow,也許我沒有正確地搜索我想要的答案。隨着時間的推移概率分佈?

我有一個具有獨特的二元關係作爲行和年列的矩陣。如果兩個人在當年沒有互動,那麼這些單元格填充0,如果他們這樣做,則填充1。

我正在嘗試計算每個單元格的百分比 - 相對於第一次出現1後的條目數量出現的次數1次。通俗地說,這只是兩個人每次互動之後每年互動的次數。

連續第一次出現1總是100%。例如,B行從下面的例子:

V1 V2 V3 V4 
A 0 0 1 0 
B 1 1 0 0 

變爲

100 100 66 50 

我得到儘可能計算的累積和對矩陣的每個單元

data <- matrix(sample(0:1,5*4,rep=T),4) 
test<-t(apply(data,1,cumsum)) 

然後我想法是創建一個類似於下面的函數類型,但我堅持使用分母的表達式(下面僅刪除第一次出現之前的條目數)。我不知道如何對未來的案例進行子集劃分,或直接引用矩陣的列索引。

mm<-function(x){(x)/(ncol(data)-(which(x>0)[1]))} 
tmp_int<-apply(data, 1:2, mm) 

還是有更簡單的方法來做到這一點?我嘗試過使用ecdf函數,但它返回了NAs。

非常感謝。

+0

是分'噸(應用(數據, 1,cumsum)/(1:ncol(data)))* 100'你在找什麼? – nicola

回答

1
data <- matrix(sample(0:1, 5 * 4, rep = TRUE), 4) 

f <- function(m) t(apply(m, 1, cumsum)) 
f(data)/(f(f(data) >= 1) + (f(data) == 0)) * 100 
#  [,1] [,2]  [,3]  [,4] [,5] 
# [1,] 100 50 66.66667 75.00000 60 
# [2,] 100 100 66.66667 50.00000 40 
# [3,] 0 100 50.00000 33.33333 25 
# [4,] 100 50 66.66667 50.00000 60 

這裏f是你已經有了,f(f(data) >= 1)給出了逐元素師幾乎適當的分母,而f(data) == 0可以確保我們不會用0

相關問題