【发布时间】:2016-08-25 11:34:00
【问题描述】:
answer 到这个question (Unique sorted rows single column from R data.table) 提出了三种不同的方法来从data.table 中获取排序唯一值的向量:
# 1
sort(salesdt[, unique(company)])
#2
sort(unique(salesdt$company))
#3
salesdt[order(company), unique(company)]
另一个answer 提出了除字典顺序之外的其他排序选项:
salesdt[, .N, by = company][order(-N), company]
salesdt[, sum(sales), by = company][order(-V1), company]
data.table 由以下人员创建
library(data.table)
company <- c("A", "S", "W", "L", "T", "T", "W", "A", "T", "W")
item <- c("Thingy", "Thingy", "Widget", "Thingy", "Grommit",
"Thingy", "Grommit", "Thingy", "Widget", "Thingy")
sales <- c(120, 140, 160, 180, 200, 120, 140, 160, 180, 200)
salesdt <- data.table(company,item,sales)
与往常一样,如果有不同的选项可供选择,我开始想知道最好的解决方案是什么,特别是如果data.table 会更大。我在 SO 上进行了一些搜索,但到目前为止还没有找到特定的答案。
【问题讨论】:
-
您可以使用:
ptm <- proc.time()your codeproc.time() - ptm对代码进行计时,因此您会找到最快的代码。 (请注意,这些是 3 行代码,注释显示为 1 行……请参阅 ats.ucla.edu/stat/r/faq/timing_code.htm 了解更多信息)。 -
@Gracos 感谢您的建议。在这里,
microbenchmark包是更好的选择,因为它允许在一个步骤中对多个表达式进行基准测试。 -
你是对的。
proc.time()只是一个更简单的选择。
标签: r dataframe data.table