我正在处理一个包含两列的数据框:
portfolio date stock Value
1 200006 Apple 10
1 200006 Google 20
1 200006 IBM 30
1 200007 Apple 10
由于数据量很大,我想找到一种简单的方法来检查从2000年6月到2000年7月,在投资组合1中,谷歌和IBM都缺失了。回报将是c(“IBM”,“GOOGLE”)。我将使用2000年7月未列出哪些股票的信息,并在2000年6月获得这些股票的价值以平衡2000年7月的投资组合。所以在这种情况下,我希望得到c(“IBM”,“GOOGLE”)和然后得到他们的价值(20,30)进一步调整苹果的价值10。
四列的数据类型为:factor,Integer,factor和Integer for portfolio,date,stock and Value。
是否有任何功能或包可以解决这个问题?
答案 0 :(得分:0)
你可以试试这个:
library(data.table)
setDT(df)
# Get all possible stocks
stocks <- unique(df$stock)
# Get missing stocks
df[, stocks[!stocks %in% stock], .(portfolio, date)]
# portfolio date V1
# 1: 1 200007 Google
# 2: 1 200007 IBM
# Or vector output (no date or portfolio info)
df[, stocks[!stocks %in% stock], .(portfolio, date)]$V1
# [1] "Google" "IBM"