合并数据框时,我需要在 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)
这从行中提取值并创建一个新列(键)并用提供的数据(值)填充它,在我的例子中它是区域。现在每个农场都有一个栖息地和相关区域的列表。
我有 运行 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)
这从行中提取值并创建一个新列(键)并用提供的数据(值)填充它,在我的例子中它是区域。现在每个农场都有一个栖息地和相关区域的列表。