我想知道我使用data.table或dplyr做错了什么。
以下代码段的目标是按行业和年份计算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 :(得分:1)
问题是dplyr和plyr都加载了。
答案 1 :(得分:1)
在这种情况下,您不一定需要拆除其中一个包。您可以加载两个包,但是当调用它们之间具有共享名称的函数时,您可以使用范围运算符来区分您正在调用的函数。例如,假设您要调用函数&#39; summarize()&#39;来自plyr包。你叫它:
plyr::summarise()
如果您想从dplyr包中调用该函数,请调用:
dplyr::summarise()