列名称和输入中的dplyr tidyr排列错误

列名称和输入中的dplyr tidyr排列错误,r,layout,dplyr,tidyr,spread,R,Layout,Dplyr,Tidyr,Spread,我正在尝试从tidyr对数据集执行spread功能,该数据集包含飞机旅行的目的地和始发地名称及其乘客数量。我试图建立一个最终可以用来制作热图的表格。因此,我希望将原始变量放在行中,将目标变量放在列中 我尝试使用不同的参数组合运行代码,并使用排列,但最终总是出现错误 如果我将排列与key\u col和val\u col一起使用,我会得到: 匹配错误(x,表格,nomatch=0L): 找不到对象“Destination.Region” 在我的大型数据集上,它会产生另一种类型的错误: colname

我正在尝试从
tidyr
对数据集执行
spread
功能,该数据集包含飞机旅行的目的地和始发地名称及其乘客数量。我试图建立一个最终可以用来制作热图的表格。因此,我希望将原始变量放在行中,将目标变量放在列中

我尝试使用不同的参数组合运行代码,并使用
排列
,但最终总是出现错误

如果我将
排列
key\u col
val\u col
一起使用,我会得到:

匹配错误(x,表格,nomatch=0L): 找不到对象“Destination.Region”

在我的大型数据集上,它会产生另一种类型的错误:


colnames中的错误这里有一些东西可以尝试:

1) 我将把
data2
转换成
data.frame
。它使使用它变得容易得多

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")

data3<-data.frame(data2)
但如果:

data3$index<-1:nrow(data3)

DF<- 
  data3 %>%
  spread_(key_ = "Destination.Region",
          value_ = "Total.Passengers", 
          convert = TRUE,
          drop = FALSE)
DF

Origin.Destination index ASIA SOUTH AMERICA WESTERN EUROPE
1         EAST AFRICA     1   NA            NA            100
2         EAST AFRICA     2   NA            NA             NA
3         EAST AFRICA     3   NA            NA             NA
4         EAST AFRICA     4   NA         10000             NA
5         EAST AFRICA     5   NA            NA             NA
6         EAST AFRICA     6   NA            NA             20
7         EAST AFRICA     7   NA            NA           4000
8     SOUTHERN AFRICA     1   NA            NA             NA
9     SOUTHERN AFRICA     2   NA          5000             NA
10    SOUTHERN AFRICA     3   NA            NA             NA
11    SOUTHERN AFRICA     4   NA            NA             NA
12    SOUTHERN AFRICA     5  200            NA             NA
13    SOUTHERN AFRICA     6   NA            NA             NA
14    SOUTHERN AFRICA     7   NA            NA             NA
15        WEST AFRICA     1   NA            NA             NA
16        WEST AFRICA     2   NA            NA             NA
17        WEST AFRICA     3  200            NA             NA
18        WEST AFRICA     4   NA            NA             NA
19        WEST AFRICA     5   NA            NA             NA
20        WEST AFRICA     6   NA            NA             NA
21        WEST AFRICA     7   NA            NA             NA

总计。乘客
乘客
?我的问题是输入错误。我刚刚纠正了它。但我的代码仍然有问题。感谢您的注意。您的示例数据似乎还以其他方式错误标记了列。你为什么不先完全修正你的例子呢?我明白了,我也修正了。谢谢。我无法用示例数据集重现这两条错误消息。我得到了标准的“重复标识符”错误,如果我删除了重复标识符
spread
则不会出错。您可以更新您的示例,使其更像您的实际数据集,或者如果实际数据太大而无法
dput
,则可以包含实际数据的结构(从
str(data2)
)。您好@Bryan,事实上,我正在处理数据帧。然而,我不知道为什么我们需要一个索引列。我试着在我的数据上使用它和你的代码,我得到了错误:utils::getS3method(“as_data_frame”,“matrix”,envir=asNamespace(“tibble”):未使用的参数(envir=asNamespace(“tibble”))需要索引,因为(参考示例数据
data3
)列1,6和7都以东非为起点。目的地,西欧为目的地。地区。除了Total.Passengers之外,没有什么可以区分这些行。由于该列被用于
扩展
,因此它变得模棱两可。例如,从东非到西欧,它应该使用哪个值?100、20或4000?嗨,布莱恩,这正是我希望的结果,谢谢你的解释。但我仍然在(envir=asNamespace(“tibble”)中遇到了这个错误。我复制粘贴了你的代码并得到了错误,所以我猜问题来自我的软件中的某个地方。。我安装了
tibble
库并播放了不同类型的数据帧,但仍然无法解决它。检查编辑是什么意思?我刚开始学习R,还有很多东西要学!谢谢你,检查编辑我只是想检查我在原来的帖子中添加了什么。我的代码是否与在我的答案中创建的示例数据集
data3
一起工作?您的工作是否需要TIBLE
软件包?如果没有,请尝试在新(重新启动)环境中的
基本data.frame
上运行代码。
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")

data3<-data.frame(data2)
DF<- 
  data3 %>%
  spread_(key_ = "Destination.Region",
          value_ = "Total.Passengers", 
          convert = TRUE,
          drop = FALSE)

Error: Duplicate identifiers for rows (1, 6, 7)
data3$index<-1:nrow(data3)

DF<- 
  data3 %>%
  spread_(key_ = "Destination.Region",
          value_ = "Total.Passengers", 
          convert = TRUE,
          drop = FALSE)
DF

Origin.Destination index ASIA SOUTH AMERICA WESTERN EUROPE
1         EAST AFRICA     1   NA            NA            100
2         EAST AFRICA     2   NA            NA             NA
3         EAST AFRICA     3   NA            NA             NA
4         EAST AFRICA     4   NA         10000             NA
5         EAST AFRICA     5   NA            NA             NA
6         EAST AFRICA     6   NA            NA             20
7         EAST AFRICA     7   NA            NA           4000
8     SOUTHERN AFRICA     1   NA            NA             NA
9     SOUTHERN AFRICA     2   NA          5000             NA
10    SOUTHERN AFRICA     3   NA            NA             NA
11    SOUTHERN AFRICA     4   NA            NA             NA
12    SOUTHERN AFRICA     5  200            NA             NA
13    SOUTHERN AFRICA     6   NA            NA             NA
14    SOUTHERN AFRICA     7   NA            NA             NA
15        WEST AFRICA     1   NA            NA             NA
16        WEST AFRICA     2   NA            NA             NA
17        WEST AFRICA     3  200            NA             NA
18        WEST AFRICA     4   NA            NA             NA
19        WEST AFRICA     5   NA            NA             NA
20        WEST AFRICA     6   NA            NA             NA
21        WEST AFRICA     7   NA            NA             NA
Origin <- c("EAST AFRICA","SOUTHERN AFRICA","WEST AFRICA", "EAST AFRICA", "SOUTHERN AFRICA", "EAST AFRICA","EAST AFRICA")
Passengers <- c(100, 5000, 200, 10000, 200, 20, 4000)
Destination <- c("WESTERN EUROPE", "SOUTH AMERICA", "ASIA", "SOUTH AMERICA", "ASIA", "WESTERN EUROPE", "WESTERN EUROPE")
data3<-data.frame(Origin, Passengers, Destination)

DF<-data3 %>% group_by(Origin, Destination) %>%
  summarise(Total.Passengers = sum(Passengers)) %>%
  spread(Destination, Total.Passengers)

DF

          Origin  ASIA SOUTH AMERICA WESTERN EUROPE
          (fctr) (dbl)         (dbl)          (dbl)
1     EAST AFRICA    NA         10000           4120
2 SOUTHERN AFRICA   200          5000             NA
3     WEST AFRICA   200            NA             NA