2016-04-03 5 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, но он возвращал NA.

Большое спасибо.

+0

ли немогу (применяются (данные, 1, cumsum)/(1: ncol (данные))) * 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.

Смежные вопросы