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

问题描述 投票:0回答:2

所以基本上,我必须处理一个巨大的数据集。

我用数据框中的两个不同变量提取表,以获得频率。

例如:

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

# lets say the table 1 looks smthg 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 列(缺少第 2 列)并且我希望将相应的值加在一起,该表应该看起来像这样:


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

所以基本上,我希望能够检测到这两天共有 9 辆车使用了 vehicletype 2 和 vehiclecompany 1。我希望该功能能够理解,即第二个没有使用公司 2 的汽车天,只使用值 0 作为列。

未简化的真实案例场景,时间范围更大,需要添加的表更多,缺少列和行。

有人有想法吗?

谢谢

我尝试了在 stackoverflow 上找到的不同内容,但无法解决问题。

r dataframe datatable frequency addition
2个回答
0
投票

在 Base 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

0
投票

另一种选择是在制表前整理数据:

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
© www.soinside.com 2019 - 2024. All rights reserved.