frank
我对这个功能感到困惑。这里的文档说:
仅适用于列表、data.frames 和 data.tables。计算排名所依据的列。不要引用列名。如果 ... 缺失,则默认考虑所有列。要按列降序排序前缀“-”,例如 frank(x, a, -b, c)。当 b 也是字符类型时, -b 也有效。
所以我有我的数据:
structure(list(product = c("Product 1", "Product 1", "Product 1",
"Product 1", "Product 1", "Product 5", "Product 5", "Product 5",
"Product 5", "Product 5"), policyID = c("A738-33", "A738-33",
"A738-33", "A738-33", "A738-33", "A738-33", "A738-33",
"A738-33", "A738-33", "A738-33"), startYear = c(2014,
2015, 2016, 2017, 2018, 2014, 2015, 2016, 2017, 2018), total = c("30000",
"30000", "30000", "30000", "30000", "10000", "10000", "10000",
"10000", "10000"), daily = c("150", "150", "150", "150", "150",
"80", "80", "80", "80", "80")), class = c("data.table", "data.frame"
), row.names = c(NA, -10L), .internal.selfref = <pointer: 0x7feec50126e0>, sorted = "product")
我想按列total
和daily
. 所以我这样做了:
> setDT(testDT)
> frankv(testDT, totallimit, rbddaily, ties.method="dense")
Error in colnamesInt(x, cols, check_dups = TRUE) :
argument specifying columns specify non existing column(s): cols[1]='30000'
奇怪的是,当我使用引号时,与文档所说的完全相反,我得到了结果:
frankv(testDT, cols=c("totallimit", "rbddaily"), ties.method="dense")
我也尝试将thin集成到data.table中,结果又发生了一件奇怪的事情。从我拥有的 10 行数据中,我获得了 100 行。
testDT[,.(rank = frankv(testDT, cols=c("limit", "daily"), ties.method="dense")), by = c("policyID", "product", "startYear")]
我做错了什么,我该如何解决?该文档没有太大帮助,也许我遗漏了一些东西......