我有以下数据框,它为跨列排列的许多标准提供了逻辑响应:
structure(list(Householdref = c("003015002024001", "003016003006001",
"003016004013001", "003016006002001", "003017003009002", "003017003009003",
"003017003009004", "003017003037001", "003017003049001", "003070001026001",
"003070003042001", "003070005002001", "003070005021001", "003070009005001",
"003071002055001", "003071003037001", "003072003029001", "003072006002001",
"003072006018001"), B5_Glass = c(FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), B5_Glass.bottles = c(TRUE,
TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE,
TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE), B5_Paper.cardboard = c(FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE
), B5_Metal.cans = c(TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE,
TRUE, TRUE, TRUE), B5_Food.biodegradables = c(FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), B5_Plastic.polybags = c(TRUE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE
), B5_Plastic.bottles.containers = c(FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE), B5_other = c(FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)), .Names = c("Householdref",
"B5_Glass", "B5_Glass.bottles", "B5_Paper.cardboard", "B5_Metal.cans",
"B5_Food.biodegradables", "B5_Plastic.polybags", "B5_Plastic.bottles.containers",
"B5_other"), row.names = c("13", "21", "25", "29", "55", "56",
"57", "60", "61", "69", "76", "81", "83", "90", "101", "108",
"120", "125", "127"), class = "data.frame")
我需要重新调整这些数据,以便我只有三列:Householdref, TRUE and FALSE
以便列的名称现在出现在 TRUE 或 FALSE 列中,以便每个Householdref
.
我一直在尝试reshape()
如下:
reshape(ar_waste_sep, direction="long", varying=2:9, sep=c("_"))
但最终是这样的:
Householdref time B5 id
1.Glass 003015002024001 Glass FALSE 1
2.Glass 003016003006001 Glass FALSE 2
3.Glass 003016004013001 Glass FALSE 3
4.Glass 003016006002001 Glass FALSE 4
5.Glass 003017003009002 Glass FALSE 5
6.Glass 003017003009003 Glass FALSE 6
7.Glass 003017003009004 Glass FALSE 7
8.Glass 003017003037001 Glass FALSE 8
9.Glass 003017003049001 Glass FALSE 9
10.Glass 003070001026001 Glass FALSE 10
11.Glass 003070003042001 Glass FALSE 11
12.Glass 003070005002001 Glass FALSE 12
所以你可以看到不完全是我所追求的。我已经到处搜索了一个可以向我展示如何做我想做的事情的例子,并且确信它并不过分复杂,但我只是在绕圈子。有人会知道一种快速简便的方法来实现我想要的,即:
Householdref TRUE FALSE
003015002024001 Glass NA
003015002024001 Glass.bottles NA
003015002024001 NA Paper.cardboard
003015002024001 NA Metal.cans
003015002024001 NA Plastic.bottles
003015002024001 NA Plastic
003017003009004 GLass NA
003017003009004 NA Glass.bottles
003017003009004 Paper.cardboardNA
提前致谢,
马蒂