我想创建一个面板数据。我的问题如下。
我想跟踪1800-1921年期间1000多个城市的4个变量。到目前为止,我在R中有一个数据框,其中包含以下列: 城市,身份证,年份,国家,纬度,经度,迫害,驱逐,波哥大,瘟疫。
理想情况下,我想扩展此数据框,以便为每个城市以下内容: 121行(从1800年到1921年)具有相同的城市,身份证,国家,纬度,经度值,但对迫害,驱逐,大屠杀,瘟疫的分配都为0。
有人告诉我reshape 2功能可能会有所帮助,尽管我还没有找到任何可行的解决方案。这是我尝试(无法适应)的代码
g <- with(data, expand.grid(year = seq(1800, 1921), id = unique(id), persecutions = 0, expulsion = 0, pogrom = 0, plague = 0)) #
data <- rbind(data, g) #
wide <- dcast(data, year ~ id, fill = 0, fun = sum, value.var = c("persecutions", "expulsion", "pogrom", "plague))
long <- melt(wide, id = "year", variable.name = "id", value.name = c("persecutions", "expulsion", "pogrom", "plague))
long <- long[order(long$id, long$year), c("id", "year", c("persecutions", "expulsion", "pogrom", "plague))]