我的问题与此处发布的问题非常相似。我正在尝试使用重塑数据将CRSP数据从长格式转换为宽格式。我将S& P公司的代码堆叠在一列中,我想把它们作为列。在我的数据框中,我有三列:“DATE”,“TICKER”和“PRC”。 (PRC是价格)。 我希望列数等于我唯一的代码。我用:
dcast(df,DATE~TIKER,value.var =“PRC”),fun.aggregate = length,fill = NaN,drop = FALSE)
这将返回完美的数据框,对左侧的时间序列日期和右侧的代码进行排序,但就像我链接的问题一样,我得到1和NaN作为我的值。我喜欢NaN的,但我希望1号被我的证券(即中国证券)的价格所取代。
我得到1和0因为一些代码丢失了数据,这有些意义,因为有些股票进出S& P 500.我只是不知道为什么会公然忽略value.var命令。
答案 0 :(得分:1)
没有工作数据集,这是我真正能提供的。
data.melt <- melt(df, id.vars=c('TICKER','DATE'), measure.vars='PRC')
data.cast <- dcast(data.melt, TICKER~DATE, sum)
答案 1 :(得分:1)
value.var不被忽略。问题是您要指定fun.aggregate=length
。这意味着它不会给你实际的值,而是一个聚合函数的结果,在这种情况下是length
所以你得到1和0因为你有丢失的数据(a 0)或1个数据点。
尝试取出fun.aggregate。有时候当数据丢失时会很繁琐,因此您可能会收到错误,然后将fun.aggregate带回来,但将length
替换为sum
或mean