【发布时间】:2016-10-14 01:16:55
【问题描述】:
我正在尝试在具有目的地和出发地名称的数据集上执行来自 tidyr 的 spread 函数,以了解飞机旅程及其乘客人数。我尝试构建一个最终可用于热图的表格。因此,我希望将 Origin 变量放在行中,将 Destination 变量作为列。
我尝试使用不同的参数组合运行代码并使用spread_,但我总是以错误告终。
如果我将 spread_ 与 key_col 和 val_col 一起使用,我会得到:
匹配错误(x, table, nomatch = 0L): 找不到对象“Destination.Region”
在我的大型数据集上,它会产生另一种类型的错误:
colnames<-(*tmp*, value = c("ASIA SUB-CONTINENT", "AUSTRALIA", 中的错误: 'dimnames' [2] 的长度不等于数组范围
这是我第一次使用tidyr 并且我正在了解这些软件包,这听起来并不复杂。但是我几个小时以来一直在解决这个问题,在任何论坛上都找不到任何答案。
感谢您的帮助,
以下是数据类型的示例:
data2<-matrix(NA, nrow = 7, ncol=3)
colnames(data2)<-c("Origin.Destination", "Total.Passengers", "Destination.Region")
data2[,1] <- c("EAST AFRICA","SOUTHERN AFRICA","WEST AFRICA", "EAST AFRICA", "SOUTHERN AFRICA", "EAST AFRICA","EAST AFRICA")
data2[,2] <- c(100, 5000, 200, 10000, 200, 20, 4000)
data2[,3] <- c("WESTERN EUROPE", "SOUTH AMERICA", "ASIA", "SOUTH AMERICA", "ASIA", "WESTERN EUROPE", "WESTERN EUROPE")
data2
这是我的代码:
DF<-
data2 %>%
spread_(key_ = "Destination.Region",
value_ = "Total.Passengers",
convert = TRUE,
drop = FALSE)
【问题讨论】:
-
Total.Passengers与Passengers? -
这是我的问题中的输入错误。我刚刚纠正了它。我的代码仍然有问题。感谢您的关注。
-
您的示例数据似乎也以其他方式错误地标记了列。你为什么不先完全修复你的例子?
-
我明白了,我也修好了。谢谢。
-
我无法使用您的示例数据集重现任何错误消息。我收到标准的“重复标识符”错误,如果我删除重复的标识符
spread可以正常工作。您可能会更新您的示例以使其更像您的实际数据集,或者如果它太大而不是dput,则包含您的真实数据的结构(来自str(data2))。
标签: r layout dplyr tidyr spread