所以基本上,我必须处理一个巨大的数据集。
我用数据框中的两个不同变量提取表,以获得频率。
例如:
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 上找到的不同内容,但无法解决问题。
在 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
另一种选择是在制表前整理数据:
即
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