【发布时间】:2021-06-07 06:53:18
【问题描述】:
我可能在这里犯了一些简单的错误,但我有一个矩阵,我想产生整个矩阵的分位数。我试过这个:
quantile(unlist(ricepm), probs = c(.25, .5, .75))
但这给了我错误的输出(全为 1)
25% 50% 75%
1 1 1
dput(head(ricepm[, c(5, 5)])) 我的数据样本
structure(
list(
Antigua.and.Barbuda =
structure(c(1L, 1L, 1L, 1L, 1L, 24L),
.Label =
c("0", "0,001255087", "0,001351049", "0,002179536",
"0,002322295", "0,00352192", "0,003639649", "0,005203948", "0,005613623",
"0,005899437", "0,0063163", "0,008692968", "0,010768326", "0,01815333",
"0,022817923", "0,05455008", "0,076043772", "0,761972864", "1,167911482",
"11,39171454", "17,55057703", "2,827338354", "3,180646314", "3,18612071",
"3,519189594", "376,5666716", "4,22468796", "5,861801198", "572,3941286",
"76,13680349"
),
class = "factor"
),
Antigua.and.Barbuda.1 =
structure(
c(1L, 1L, 1L, 1L, 1L, 24L),
.Label =
c("0", "0,001255087", "0,001351049",
"0,002179536", "0,002322295", "0,00352192", "0,003639649", "0,005203948",
"0,005613623", "0,005899437", "0,0063163", "0,008692968", "0,010768326",
"0,01815333", "0,022817923", "0,05455008", "0,076043772", "0,761972864",
"1,167911482", "11,39171454", "17,55057703", "2,827338354", "3,180646314",
"3,18612071", "3,519189594", "376,5666716", "4,22468796", "5,861801198",
"572,3941286", "76,13680349"
),
class = "factor"
)
),
row.names =
c("Afghanistan","Albania", "Algeria", "Angola", "Antigua and Barbuda", "Argentina"),
class = "data.frame"
)
【问题讨论】:
-
对于共享的示例,它给出了所有 0,因为这是正确答案。您需要使用更高的
prob值来获得非零值。例如,quantile(Z, 0.9)给你一个非零值。 -
您的数据似乎不是数字而是因子。如果要对它们使用分位数,则需要将它们转换为数字,预先用点替换逗号。 This post on how to convert a factor to numeric 可能会有所帮助
-
@Cath 谢谢!运行它似乎可行,但我现在得到的输出只有 0。计算分位数时是否需要告诉 R 排除矩阵中的零?
-
您的数据似乎包含很多零,可能超过 75%,因此分位数值...
-
抱歉,我不确定我是否得到了正确的结果,因为该函数在计算分位数时似乎包含 0。关于如何计算除 0 以外的分位数的任何提示?