R 添加 in/populate 缺失组合 dcast reshape2 table
R add in/populate missing combinations dcast reshape2 table
这是我的数据table:
Name.1 <- c(rep("IVa",12),rep("VIa",10),rep("VIIb",3),rep("IVa",5))
qrt <- c(rep("Q1",6),rep("Q3",10),rep("Q4",3),rep("Q1",5),rep("Q1",3),rep("Q3",3))
variable <- c(rep("wtTonnes",30))
value <- c(201:230)
df <- data.frame(Name.1,qrt,variable,value)
df1 <- dcast(df, Name.1 ~ qrt, fun.aggregate=sum, value.var="value",margins=TRUE)
它给了我这样的输出;
Name.1 Q1 Q3 Q4 (all)
IVa 1674 1944 0 3618
VIa 663 858 654 2175
VIIb 672 0 0 672
(all) 3009 2802 654 6465
'qrt' 值 Q1、Q3、Q4 代表一年中的季度。基本上我希望 table 包含缺失的四分之一并用 0 填充。每年当我 运行 脚本时,任何四分之一的组合都可能有 wtTonne 值,我不想硬编码每次以缺少的为准。
在这种情况下,我希望它看起来像:
Name.1 Q1 Q2 Q3 Q4 (all)
IVa 1674 0 1944 0 3618
VIa 663 0 858 654 2175
VIIb 672 0 0 0 672
(all) 3009 0 2802 654 6465
是否可以在任何阶段将列表传递给 table 或原始数据来说明我想要哪些列? (即总是有 Q1、Q2、Q3、Q4)如果需要的话带有虚拟值。
下面应该给你所需的输出:
df$qrt <- factor(df$qrt, levels = c("Q1", "Q2", "Q3", "Q4"))
df1 <- dcast(df, Name.1 ~ qrt, fun.aggregate=sum, value.var="value",margins=TRUE, drop = F)
一开始我告诉R
,qrt
是对应level的一个因子,包括没有出现的level,然后我告诉dcast
避免dropping unused组合。这给出:
Name.1 Q1 Q2 Q3 Q4 (all)
1 IVa 1674 0 1944 0 3618
2 VIa 663 0 858 654 2175
3 VIIb 672 0 0 0 672
4 (all) 3009 0 2802 654 6465
这是我的数据table:
Name.1 <- c(rep("IVa",12),rep("VIa",10),rep("VIIb",3),rep("IVa",5))
qrt <- c(rep("Q1",6),rep("Q3",10),rep("Q4",3),rep("Q1",5),rep("Q1",3),rep("Q3",3))
variable <- c(rep("wtTonnes",30))
value <- c(201:230)
df <- data.frame(Name.1,qrt,variable,value)
df1 <- dcast(df, Name.1 ~ qrt, fun.aggregate=sum, value.var="value",margins=TRUE)
它给了我这样的输出;
Name.1 Q1 Q3 Q4 (all)
IVa 1674 1944 0 3618
VIa 663 858 654 2175
VIIb 672 0 0 672
(all) 3009 2802 654 6465
'qrt' 值 Q1、Q3、Q4 代表一年中的季度。基本上我希望 table 包含缺失的四分之一并用 0 填充。每年当我 运行 脚本时,任何四分之一的组合都可能有 wtTonne 值,我不想硬编码每次以缺少的为准。
在这种情况下,我希望它看起来像:
Name.1 Q1 Q2 Q3 Q4 (all)
IVa 1674 0 1944 0 3618
VIa 663 0 858 654 2175
VIIb 672 0 0 0 672
(all) 3009 0 2802 654 6465
是否可以在任何阶段将列表传递给 table 或原始数据来说明我想要哪些列? (即总是有 Q1、Q2、Q3、Q4)如果需要的话带有虚拟值。
下面应该给你所需的输出:
df$qrt <- factor(df$qrt, levels = c("Q1", "Q2", "Q3", "Q4"))
df1 <- dcast(df, Name.1 ~ qrt, fun.aggregate=sum, value.var="value",margins=TRUE, drop = F)
一开始我告诉R
,qrt
是对应level的一个因子,包括没有出现的level,然后我告诉dcast
避免dropping unused组合。这给出:
Name.1 Q1 Q2 Q3 Q4 (all)
1 IVa 1674 0 1944 0 3618
2 VIa 663 0 858 654 2175
3 VIIb 672 0 0 0 672
4 (all) 3009 0 2802 654 6465