我在Excel文件中有许多工作表都适合这个基本问题。详细信息:
一个示例数据框如下所示(年份和月份以外的值并不真正相关,因此其中某些重复):
KPI <- data.frame(X1 = c(NA, NA, "Loc", 2941, 2963, 2222),
X2 = c("HH", 2017, 1, 45221, 50181, 13959),
X3 = c(NA, NA, 2, 16518, 1550, 5000),
X4 = c(NA, NA, 3, 45111, 4800, 4600),
X5 = c(NA, NA, 4, 45111, 4800, 4600),
X6 = c(NA, NA, 5, 45111, 4800, 4600),
X7 = c(NA, NA, 6, 45111, 4800, 4600),
X8 = c(NA, NA, 7, 45111, 4800, 4600),
X9 = c(NA, NA, 8, 45111, 4800, 4600),
X10 = c(NA, NA, 9, 45111, 4800, 4600),
X11 = c(NA, NA, 10, 45111, 4800, 4600),
X12 = c(NA, NA, 11, 45111, 4800, 4600),
X13 = c(NA, NA, 12, 45111, 4800, 4600),
X14 = c("HH", 2018, 1, 40000, 4200, 4500),
X15 = c(NA, NA, 2, 45111, 4800, 4600),
X16 = c(NA, NA, 3, 45111, 4800, 4600),
X17 = c(NA, NA, 4, 45111, 4800, 4600),
X18 = c(NA, NA, 5, 45111, 4800, 4600),
X19 = c(NA, NA, 6, 45111, 4800, 4600),
X20 = c(NA, NA, 7, 45111, 4800, 4600),
X21 = c(NA, NA, 8, 45111, 4800, 4600),
X22 = c(NA, NA, 9, 45111, 4800, 4600),
X23 = c(NA, NA, 10, 45111, 4800, 4600),
X24 = c(NA, NA, 11, 45111, 4800, 4600))
但是我需要将上面的内容转换为三列:
我需要一个函数,该函数本质上将不列出变量名称,年份和月份,然后将月份和年份合并以形成第二列,并在第三列中融化并散布该值,以用于适当的度量和位置日期。我尝试过,但是前几列中缺少值会导致标题问题和长度问题。
就像这样,但是对于2017年至2018年所有日期中第1列中的每个位置,我都可以重写以阅读excel工作簿中的每个工作表,但是最好的答案也应该包括这一点,感谢任何人的帮助,我不能是唯一的一个吗?
KPIdesire <- data.frame(Loc = c(2941, 2941, 2941),
Date = c("1-2017", "2-2017", "3-2017"),
HH = c(45221, 16518, 54111))