我是 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。
非常感谢。