我希望在发行版中产生一个"百分位数"每个现有列的列。
我不确定如何为单个系列生成此百分位列。
#generate data
df <- data.frame(rnorm(100, 3, 1.2),
rnorm(100, 2, 0.5),
rnorm(100, 4, 1.5),
rnorm(100, 5, 0.2),
rnorm(100, 6, 0.7))
colnames(df) <- c('a', 'b', 'c', 'd', 'e')
#failed attempt to generate new column
df$a_pct <- sapply(df$a, function(x) ecdf(x))
答案 0 :(得分:1)
你必须使用ecdf
吗?只是做:
sapply(df, function(x) rowMeans(outer(x, x, `>`)))
答案 1 :(得分:1)
System.argv/0
的值返回一个函数。
$ cat a.exs
IO.inspect System.argv
$ elixir a.exs foo bar
["foo", "bar"]
要获得百分位数,请在值上应用函数,即
ecdf
对于多列,使用str(ecdf(df$a))
#function (v)
#- attr(*, "class")= chr [1:3] "ecdf" "stepfun" "function"
#- attr(*, "call")= language ecdf(df$a)
ecdf(df$a)(df$a)