我使用table()
生成了两个列联表。
R> first
0 5 11 17 19 50 95 100
48 1 1 1 1 1 1 6
R> second
0 11 17 30 33 50 67 83 100
67 1 1 1 1 2 2 2 8
我想用0频率填充缺少元素的两个表。例如,我希望这些看起来像这样:
R> first
0 5 11 17 19 30 33 50 67 83 95 100
48 1 1 1 1 0 0 1 0 0 1 6
R> second
0 5 11 17 19 30 33 50 67 83 95 100
67 0 1 1 0 1 1 2 2 2 0 8
答案 0 :(得分:2)
<强> 1。第一个选项
我们可以将矢量转换为指定级别的因子类,然后执行table
。在创建的示例中。 table
输出,&#39; v1&#39;的一些元素在第一个&#39;中缺少
first
# 0 5 11 17 19 50 95 100
#48 1 1 1 1 1 1 6
假设,如果我们返回获取初始向量,请将其转换为因子,方法是将levels
指定为&#39; v1&#39;在致电table
table(factor(rep(names(first), first), levels=v1))
# 0 5 11 17 19 30 33 50 67 83 95 100
#48 1 1 1 1 0 0 1 0 0 1 6
第二个&#39;
可以做同样的事情<强> 2。第二个选项
而不是回头并改变因素&#39;我们也可以通过创建第三个&#39;来获得所需的输出。表&#39; 0s&#39;对于所有唯一元素,请同时填充表格,删除重复元素,排序..
Un <- union(names(first), names(second))
third <- as.table(setNames(rep(0, length(Un)), Un))
first1 <- c(first, third)
first2 <- first1[!duplicated(names(first1))]
as.table(first2[order(as.numeric(names(first2)))])
# 0 5 11 17 19 30 33 50 67 83 95 100
# 48 1 1 1 1 0 0 1 0 0 1 6
v1 <- c(0, 5, 11, 17, 19, 30, 33, 50, 67, 83, 95, 100)
first <- structure(c(48, 1, 1, 1, 1, 1, 1, 6), .Dim = 8L,
.Dimnames = list(
c("0", "5", "11", "17", "19", "50", "95", "100")), class = "table")
second <- structure(c(67, 1, 1, 1, 1, 2, 2, 2, 8),
.Dim = 9L, .Dimnames = list(
c("0", "11", "17", "30", "33", "50", "67", "83", "100")),
class = "table")