【发布时间】:2014-08-08 12:50:01
【问题描述】:
我想知道我在使用 data.table 或 dplyr 时做错了什么。
以下代码 sn-p 的目标是按部门和年份计算 ROA 与 ROA 中值的差异。两者看起来应该产生可比较的结果,但没有。
require(data.table)
require(dplyr)
set.seed(1)
roa <- rnorm(100000, mean = 0, sd = 1)
sector <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
year <- c(2012, 2011, 2010, 2009, 2008, 2007)
sector <- sample(sector, 100000, replace = T)
year <- sample(year, 100000, replace = T)
data <- data.table(roa, sector, year)
rm(roa, sector, year)
data[,roa_ad_chk:= roa - median(roa, na.rm=T), by = c("sector", "year")]
data <- data %>%
group_by(sector, year) %>%
mutate(roa_ad = roa - median(roa, na.rm = T))
#shouldn't these functions be equivalent?
sum(data$roa_ad_chk - data$roa_ad)
rm(data)
【问题讨论】:
-
当我运行它时,最终总和为 0 - 所以它们似乎是等价的。你得到什么?你运行什么版本的
dplyr和data.table? -
我得到了 66.81926。虽然我刚刚重新启动 R 并得到 0 的答案。看起来这与加载 dplyr 和 plyr 有关。
标签: r data.table dplyr