我在R中有以下数据框df
time
[1] 0.432
[2] 0.451
[3] 0.399
[4] 0.422
...
[25] 0.444
现在,我想在此数据框中添加一个列(让我们称之为timep
),其中的元素由以下公式计算:
列
i
中行timep
上的项应该等于:列time
中元素的数量小于或等于列time
中的项目的数量在行i
上,除以数据帧的行数。在伪代码中:
df$timep[i] <- count(df$time <= df$time[i])/length(df)
只是,我真的不知道如何在R中正确表达这一点。
答案 0 :(得分:3)
R有一个内置的经验cdf ecdf。
假设您有一个数据框df
:
df <- data.frame(time = c(0.432, 0.451, 0.399, 0.422, 0.444))
您可以使用以下命令创建经验cdf:
P <- ecdf(df$time)
现在,如果您将值传递给P,它将返回该值的累积概率:
df$cdf <- P(df$time)
输出:
time cdf
1 0.432 0.6
2 0.451 1.0
3 0.399 0.2
4 0.422 0.4
5 0.444 0.8