合并数据框时,我需要在 R 中重组我的行和列

When merging data frames I need to restructure my rows and columns in R

我有 运行 R 中用于生态学研究的完整空间分析。为此,我不得不 运行 在 rgeos 包中进行各种地理操作,例如gUnion、gIntersect、gArea 等

当我终于开始将所有数据合并在一起时,我遇到了问题。

我正在处理农场地块的数据,当我使用 gintersect 提取栖息地特征时(一层是农场,一层是土地利用,都是矢量 .shp 文件)生成的数据框为每个创建一个新行尽管是同一个农场的栖息地。

我想知道是否可以为每个栖息地创建新列而不是新行,以便每个农场只有一行数据。

下面的例子

set.seed(100)

WhatIHave <- data.frame(ID = c(1, 2, 3, 4, 5, 6),
                  farm = c('a', 'a', 'a', 'a', 'b', 'b'),
                  habitat = c("urban", "pasture","urban", "pasture", "urban", "pasture"))




WhatIWant <- data.frame(ID = c(1, 2, 3),
                        farm = c('a', 'a', 'b'),
                        habitat1 = c("urban", "urban", "urban"),
                        habitat2 = c("pasture", "pasture", "pasture"))


WhatIHave
WhatIWant

下面是真实的数据框。如您所见,应该只有 3 行(一个农场有两个字段,所以每个字段一行,因为它们不同)并且有很多重复值,因为应该只有三行,因此我需要 Habitat 和 Habitat_Area_Hectares每行多列。

我想通了。

bufflanduse <- spread(bufflanduse, key=Habitat, value=Ha)

这从行中提取值并创建一个新列(键)并用提供的数据(值)填充它,在我的例子中它是区域。现在每个农场都有一个栖息地和相关区域的列表。