我有一张表格,其中列有植物种类和其他因素,以及恢复的、未恢复的和近自然栖息地的行中的地块 ID。我在简化 R 中的分析时遇到问题。
当我遇到问题时,格式化表格以便在 R 中导入的最佳方法是什么?想测试total_plant_coverage_%是否随着years_since_restoration发生变化?或者,如果我想要一个按 site_status(恢复/未恢复/接近自然)分组的序数比例图来测试它们在植物成分上是否不同?您是否建议为 diff 创建多个表?分析?
未来
“最佳方法”总是有争议的,但这是一种至少获得整洁数据集的方法。
读取数据
library(readxl)
df <- read_excel("table.xlsx")
将前 3 个 ID 调整并折叠为非冗余形式,并将行转换为列以获得单独的字符和数字列。
colnames(df)[1] <- "ID"
df <- data.frame(colnames(df[-c(1:3, 12),]), t(df[-c(1:3, 12),]))
现在将第一行的行名称放入列名称
colnames(df) <- df[1,]
df <- df[-1,]
最后调整列的类别,主要对除
as.numeric
之外的所有列使用
1:2
df <- cbind(df[,1:2], Vectorize(\(x) as.numeric(x))(df[,-c(1:2)]))
非强制性,如果您想使用 tibble
在
tidyverse中工作(“tibble()”构造一个数据框,带有一些 增强,请参阅
?tibble::tibble
)
library(tibble)
tibble(df)
# A tibble: 3 × 21
ID site_status Vascular_plant_cover_…¹ `Bryophyte_cover_%` `Litter_cover_%`
<chr> <chr> <dbl> <dbl> <dbl>
1 A1_a restored 77 16 0
2 A1_b restored 35 57 0
3 A1_c restored 60 35 0
# ℹ abbreviated name: ¹`Vascular_plant_cover_%`
# ℹ 16 more variables: `Bare_ground_%` <dbl>, `Water_cover_%` <dbl>,
# year_restoration <dbl>, yeas_since_restoration <dbl>,
# `'Alnus glutinosa'` <dbl>, `'Agrostis canina'` <dbl>,
# `'Ajuga reptans'` <dbl>, `'Anthoxantum odoratum'` <dbl>,
# `'Betula pendula'` <dbl>, `'Blechnum spicant'` <dbl>,
# `'Calamagrostis arundinacea'` <dbl>, `'Calluna vulgaris'` <dbl>, …
注意,数据有 2 个表格合二为一,统计数据和物种。通过这种方法将它们保持在一起。