首页 > 解决方案 > 合并数据框时,我需要在 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 为多列每一行。

在此处输入图像描述

标签: rdataframerowsdata-cleaningcol

解决方案


我想到了。

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

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


推荐阅读