我有一个如下所示的数据集:
` GN Datum Land AG..GKV. MTCR..GKV. NSGI..GKV. NSGII..GKV. WA..GKV. ML..GKV. Wert
8 11693 2012-01-05 Kenia 5A001f 159700
9 11710 2012-01-05 Indien 1C350.43 18752
10 11749 2012-01-05 Taiwan, Provinz von China 2B350g2 24000
11 11750 2012-01-05 Indien 2B201a1 2B001b2 370296
12 11751 2012-01-05 Serbien 2B201a 7200
13 11752 2012-01-05 Indien 4c 6037
14 11753 2012-01-05 Rumänien 2B001d 7830
15 11755 2012-01-06 China 2B201a1 215987
16 11756 2012-01-06 China 2B201a1 234736
17 11757 2012-01-06 Brasilien 2B231 69900
18 11758 2012-01-06 Brasilien 2B231 139800
19 11788 2012-01-07 Kongo 139800
GN
是唯一的ID。正如您所看到的,对于每一行,变量AG..GKV.
到ML..GKV
最多只保持一个值,除非GN == 11750
。
我想将这些变量合并成一个,但仍然知道原始变量名,就像这样:
` GN Datum Land variable value Wert
8 11693 2012-01-05 Kenia WA..GKV. 5A001f 159700
9 11710 2012-01-05 Indien AG..GKV. 1C350.43 18752
...
如果每行有两个值,例如
GN == 11750
,应该像这样显示:` GN Datum Land variable value Wert
11 11750 2012-01-05 Indien NSGII..GKV.\nWA..GKV. 2B201a1\n2B201a 370296
即,"double"变量和值应该由一个新的行分隔符分开。
更新:还有一种特殊情况:当一行中没有任何值时。我想保留这些(见上面和下面的GN == 19)。在这种情况下,"variable"和"value"应该为空。
` GN Datum Land variable value Wert
19 11788 2012-01-07 Kongo 370296
我不知道如何实现这一点,已经尝试了
reshape
包,但可能太过于R新手。这是一个
dput
(与上面的案例不同,但具有三种结果类型): structure(list(GN = c(11789L, 11790L, 11791L, 11793L, 11794L,
11795L, 11796L), Datum = structure(c(15355, 15355, 15355, 15355,
15355, 15356, 15356), class = "Date"), Land = c("China", "Israel",
"Pakistan", "Iran, Islamische Republik", "Hong Kong", "Südafrika",
"Lettland"), AG..GKV. = c("2B350d4", "", "", "", "", "", ""),
MTCR..GKV. = c("", "", "", "", "", "", ""), NSGI..GKV. = c("",
"", "", "", "", "", ""), NSGII..GKV. = c("", "", "", "",
"", "", "2B201a1"), WA..GKV. = c("", "7A002a+b", "", "",
"3A001a2c", "6A003b4", "2B001b2"), ML..GKV. = c("", "", "",
"", "", "", ""), Wert = c(63720, 25672, 1608000, 10738, 202500,
13500, 374873)), .Names = c("GN", "Datum", "Land", "AG..GKV.",
"MTCR..GKV.", "NSGI..GKV.", "NSGII..GKV.", "WA..GKV.", "ML..GKV.",
"Wert"), row.names = 49:55, class = "data.frame")
Error in filter(., Value != "") : object 'Value' not found
的错误信息。为什么会这样? - grssnbchrdplyr
,我以为它会随着tidyr
一起加载。现在它可以工作了。 - grssnbchrdplyr
和tidyr
来解决这个问题。问题是filter(Value != "")
对这种情况和“正常”情况没有区别。 - grssnbchrfilter
语句现在是在group_by
之后。 - talat