R 将宽格式数据重塑为频率

R 将宽格式数据重塑为频率,r,reshape,R,Reshape,我有按国家、所在半球(北半球、南半球、赤道)和季节(夏季、秋季、冬季、春季)划分的死亡数据。当然,任何一个国家都属于同一个半球。目前数据格式较宽(每行对应不同的情况) 我正试图为泊松回归重塑数据集,因此我需要每个国家四行(每个季节一行)和一个频率变量,表示该国家该季节发生的病例数。我还需要保持半球变量 以下是我尝试过的: #three countries (A, B, C) country = c(rep("A", 5), rep("B", 20), rep("C", 4)) #A is

我有按国家、所在半球(北半球、南半球、赤道)和季节(夏季、秋季、冬季、春季)划分的死亡数据。当然,任何一个国家都属于同一个半球。目前数据格式较宽(每行对应不同的情况)

我正试图为泊松回归重塑数据集,因此我需要每个国家四行(每个季节一行)和一个频率变量,表示该国家该季节发生的病例数。我还需要保持半球变量

以下是我尝试过的:

 #three countries (A, B, C)
 country = c(rep("A", 5), rep("B", 20), rep("C", 4))

 #A is Northern, B and C are Equatorial
 hemisphere = c(rep("Northern", 5), rep("Equatorial", 20), rep("Equatorial", 4))

 #season of each occurrence
 season = sample(c("Fall", "Winter", "Summer", "Spring"), size=29, replace=T)

 fake = data.frame(country, hemisphere, season)

 #almost works
 fake2 = as.data.frame(table(fake$country, fake$season, fake$hemisphere))
结果的问题是,我们得到了Freq=0的行,对应于国家A这样的条件,因为这是不可能的条件。换句话说,不应该有对应于不存在的国家-半球组合的行。我该如何解决这个问题


提前感谢。

为什么不删除有问题的行
fake2=fake2[fake2$Freq>0,]
此外,如果使用泊松回归,构建的model.matrix将创建零,即使您的数据中确实存在这些零。所以你可能是在花费不必要的努力。@Peyton,那是行不通的,因为在我的真实数据集中,有时频率实际上是零(即使是在可能的国家和半球组合中)。@DWin,我想我不明白你说的设计矩阵是什么意思?它是
glm
函数用回归公式RHS上的参数创建的。