我正在使用fbRads包中的fb_insights,如下所示:(我在实际问题中使用了更多指标)
fb_campaigns< – rbindlist(lapply(l,function(l)cbind(Campaign = l $campaign_name,rbindlist(l $actions)))) 哦,我收到一些警告(我知道我做错了什么,但无法解决): 警告信息:
1:在data.table :: data.table(…)中:
第1项的尺寸为11,但最大尺寸为104(可回收剩余的5件)
结果是数据框包含我需要的所有数据(Campaign,action_type,value),但是……带有“action_types”的列及其数字不按顺序排列.动作数据似乎不是来自行中的广告系列.
如何将动作类型与广告系列合并?
在我正确的行中的数据之后,我将使用reshape使用值生成action_types列.
我使用我的代码获得的数据是这样的(格式是正常的,但不是值的顺序,它们不是广告系列的值)
最佳答案
daroczig给我解决方案,似乎工作正常!
## list of action types to extract
actiontypes <- c('link_click', 'comment', 'like', 'post')
## extract actions from the data returned by the Insights API
lactions <- unlist(lapply(l, function(x) x$actions), recursive = FALSE)
## extract fields from the actions
library(data.table)
lactions <- rbindlist(lapply(lactions, function(actions) {
setnames(as.data.table(
do.call(cbind,
lapply(actiontypes,
function(action) {
if (is.null(actions)) return(0)
value <- subset(actions, action_type == action, value)
if (nrow(value) == 0) return(0) else
return(value[[1]])
}))),
actiontypes)
}))
## Merging the dataframe with the original data and the dataframe with the actions
fb_campaigns <- cbind(l[,c(1,4:11)],lactions))