R合并不同维度的多个表格的功能(添加相应的值)

wbgh16ku  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(98)

所以基本上,我需要处理一个巨大的数据集。
我在dataframe中提取了两个不同变量的表,以获得Frequency。
例如:

table1<-table(df1$vehicletype,df1$company)

# let's say table 1 looks something like this

  1 2 3 4 5 6 7
1 1 2 3 1 2 6 4
2 3 4 3 4 1 2 3
3 4 6 3 5 6 7 8

table2<-table(df1$vehicletype2,df1$company2)

  1 3 4 5 6 7
1 3 1 4 1 5 6
2 6 3 6 2 0 0
3 4 3 6 3 2 1

现在我想合并这两个表,虽然表2中只有6列(第二列缺失),我想将相应的值加在一起,表应该看起来像这样:
因此,基本上,我希望能够检测到在这两天中,共有9辆车使用了vehicletype 2和vehiclecompany 1。我希望函数能够理解,在第二天根本没有使用来自公司2的汽车,并且仅将值0用于列。
真实的的案例场景没有被简化,它跨越了更大的时间范围,并且有更多的表需要添加缺少的列和行。
有谁知道吗?
谢谢你
我尝试了不同的东西,我发现在StackOverflow,不能解决这个问题。

q0qdq0h2

q0qdq0h21#

在R基地你可以

merge(table1, table2, by = c('Var1', 'Var2'), all = TRUE)|>
   transform(Freq =  rowSums(cbind(Freq.x, Freq.y), TRUE)) |>
   xtabs(Freq~Var1+Var2, data = _)
    Var2
Var1  1  2  3  4  5  6  7
   1  4  2  4  5  3 11 10
   2  9  4  6 10  3  2  3
   3  8  6  6 11  9  9  9
ecfsfe2w

ecfsfe2w2#

另一种选择是在制表之前排列数据:

comp_lev <- unique(c(df1$company, df1$company2))
vtype_lev <- unique(c(df1$vehicletype,df1$vehicletype2))

df1$company <- factor(df1$company, comp_lev)
df1$company2 <- factor(df1$company2, comp_lev)
df1$vehicletype <- factor(df1$vehicletype, vtype_lev)
df1$vehicletype2 <- factor(df1$vehicletype2, vtype_lev)

然后,您可以创建具有相同维度的表:

table1 <- table(df1$vehicletype, df1$company)

table2 <- table(df1$vehicletype2, df1$company2)

table1 + table2

   1  2  3  4  5  6  7
1  4  2  4  5  3 11 10
2  9  4  6 10  3  2  3
3  8  6  6 11  9  9  9

相关问题