这是我的示例数据帧
mydataf.tickersymbol mydataf.yr_qtr mydataf.act_mean
1 ABC 20084 BB
2 ABC 20091 BB
3 ABC 20092 BB
4 ABC 20093 BB
5 DEF 20084 BB
6 DEF 20091 BB
7 DEF 20092 BB
8 DEF 20093 BB
9 DEF 20094 BB
10 GEF 20092 BB
11 GEF 20093 BB
12 GEF 20094 M
Run Code Online (Sandbox Code Playgroud)
尝试通过加入yr_qtr每个股票代码并关注缺失的数据来获得输出.我可以通过循环并为所有检查创建逻辑,但似乎通过数据框我应该能够使用r数据帧功能吗?
20084 20091 20092 20093 20094
ABC AA BB BB BB
DEF BB BB BB BB BM
GEF BB BB M
Run Code Online (Sandbox Code Playgroud)
我会这样做:
library(tidyr)
df %>% spread(mydataf.yr_qtr, mydataf.act_mean)
Run Code Online (Sandbox Code Playgroud)
或使用reshape2包:
library(reshape2)
dcast(df, mydataf.tickersymbol ~ mydataf.yr_qtr,
value.var = "mydataf.act_mean")
Run Code Online (Sandbox Code Playgroud)
这使:
mydataf.tickersymbol 20084 20091 20092 20093 20094
1 ABC BB BB BB BB <NA>
2 DEF BB BB BB BB BB
3 GEF <NA> <NA> BB BB M
Run Code Online (Sandbox Code Playgroud)
或者如果我们需要"mydataf.tickersymbol"作为行名,使用acast它将提供矩阵输出,然后转换回data.frame与as.data.frame
library(reshape)#reshape2_1.4
as.data.frame(acast(df, mydataf.tickersymbol~mydataf.yr_qtr,
value.var='mydataf.act_mean', fill=''))
# 20084 20091 20092 20093 20094
# ABC BB BB BB BB
# DEF BB BB BB BB BB
# GEF BB BB M
Run Code Online (Sandbox Code Playgroud)