【发布时间】:2018-05-17 19:55:38
【问题描述】:
我正在寻找答案,但找不到答案,所以我希望这是一个尚未触及的话题。
我有一个来自 CRSP 的 xlsx 面板数据文件,用于 1963 年至 2017 年纽约证券交易所所有公司的月度股票回报。这些是列:
月份(DD/MM/YYYY)|公司代码 |公司名称 |行业代码 |返回
例如1981 年 3 月 31 日 |苹果 |苹果公司| 12345 | -0.07512
现在我想在一个额外的列中计算贬低回报,即 Return(Apple,March1981) MINUS Mean-Return(Apple,whole sample period)。 我正在尝试使用 scale 函数,但显然,它贬低了所有回报的平均值,而不仅仅是苹果特定的回报。我如何编码它应该只将苹果返回到平均计算中?
提前感谢您,祝您有美好的一天!
编辑:删除了 excel 文件。
【问题讨论】:
-
如果没有可重复的数据,这很难验证,但您可能希望来自
dplyr:df %>% group_by(`Company Code`) %>% mutate(demeaned = Return - mean(Return)) -
行不通我认为是因为列中也有非数字值,有时列中有空格或“A”或“B”之类的字母。我试过了:
dplyr::select_if(Returns, is.numeric)和nums <- as.numeric(levels(Returns))[as.integer(Returns)] m <- mean(nums, na.rm = T) nums[is.na(nums)] <- m Returns_new.x <- nums但它没有用。 -
as.numeric不能神奇地将事物转换为数值,尤其是对于空白或字母。您需要使用filter或其他方法删除这些行。 -
我现在有这个:``` r testdata1 %>% group_by(
Ticker Symbol) %>% mutate(Return adj.= as.numeric(Return adj.)) %>% mutate( avg_return = mean(Return adj., na.rm = TRUE)) %>% mutate(demeaned_return =Return adj.- avg_return) #> testdata1 中的错误 %>% group_by(Ticker Symbol) %>% mutate(Return adj.= as.numeric(Return adj.)) %>% : konnte Funktion "%>%" nicht finden ``` 虽然我已经安装了 dplyr,但它说它找不到函数 "%>%"。并且没有新列,所以mutate函数没有通过。 -
安装后有没有给
library(dplyr)打过电话?并且您没有将管道的结果分配回任何对象;以x <- testdata %>% ...开头
标签: r statistics regression