如何将 csv 导入到 R 中,使其将其识别为 3D 数组?

问题描述 投票:0回答:1

我正在尝试使用 spOccupancy 包在 R 中运行多物种占用模型。我已经使用这个包运行了单一物种占用模型,但现在我想运行多物种占用模型,以了解物种如何相互作用以影响它们在景观中的占用。但是,这需要我将列表的第一个元素 y 转换为 3D 数组,其中第一个维度等于物种数量,第二个维度等于站点数量,第三个维度等于最大数量给定位点的重复次数。目前我有一个 CSV 文件,其中第一列是站点名称,下一列是物种名称,接下来的几列是 0 和 1,具体取决于是否检测到物种。如何将其转换为 3D 数组来运行多物种占用模型?

这是输入的前五行目前的样子:

structure(list(Site = c("Piata", "Piata", "Piata", "Piata", "Piata"
), Species = c("Anas_flavirostris", "Anas_georgica", "Chloephaga_melanoptera", 
"Chroicocephalus_serranus", "Fulica_ardesiaca"), Y.1 = c(1L, 
0L, 1L, 1L, 1L), Y.2 = c(0L, 1L, 1L, 0L, 1L), Y.3 = c(1L, 0L, 
1L, 0L, 1L)), row.names = c(NA, 5L), class = "data.frame")
r arrays multidimensional-array import
1个回答
0
投票

您应该能够使用以下两步代码将数据框重塑为看起来像数组的对象。假设您的数据框名为

data
:

第1步:重塑为长形:

library(tidyr)
df <- pivot_longer(data, 
                   cols= -c(Site, Species), 
                   names_to="rep", 
                   names_prefix="Y.",
                   values_to="Y")

> df
# A tibble: 15 × 4
   Site  Species                  rep       Y
   <chr> <chr>                    <chr> <int>
 1 Piata Anas_flavirostris        1         1
 2 Piata Anas_flavirostris        2         0
 3 Piata Anas_flavirostris        3         1
 4 Piata Anas_georgica            1         0
 5 Piata Anas_georgica            2         1
 6 Piata Anas_georgica            3         0
 7 Piata Chloephaga_melanoptera   1         1
 8 Piata Chloephaga_melanoptera   2         1
 9 Piata Chloephaga_melanoptera   3         1
10 Piata Chroicocephalus_serranus 1         1
11 Piata Chroicocephalus_serranus 2         0
12 Piata Chroicocephalus_serranus 3         0
13 Piata Fulica_ardesiaca         1         1
14 Piata Fulica_ardesiaca         2         1
15 Piata Fulica_ardesiaca         3         1

第2步:转换为3维数组:

Y <- xtabs(Y~Species+Site+rep, data=df)

Y
, , rep = 1

                          Site
Species                    Piata
  Anas_flavirostris            1
  Anas_georgica                0
  Chloephaga_melanoptera       1
  Chroicocephalus_serranus     1
  Fulica_ardesiaca             1

, , rep = 2

                          Site
Species                    Piata
  Anas_flavirostris            0
  Anas_georgica                1
  Chloephaga_melanoptera       1
  Chroicocephalus_serranus     0
  Fulica_ardesiaca             1

, , rep = 3

                          Site
Species                    Piata
  Anas_flavirostris            1
  Anas_georgica                0
  Chloephaga_melanoptera       1
  Chroicocephalus_serranus     0
  Fulica_ardesiaca             1

当使用

spOccupancy
包中的函数时,现在的格式适合于 data 参数的第一个组件 (y)。

© www.soinside.com 2019 - 2024. All rights reserved.