使用Tidyr在R中彻底重组数据帧

史蒂夫斯汀雷

我有一个包含植被数据的数据框。列是物种名称,行是它们在每个站点的相对丰度。地点,地块代码和年份也是变量。数据如下:

Site Code Year speca specb specc 
A     A1  2001   0     1     10   
A     A2  2001   5     5     15
B     B1  2001   0     5     20
B     B1  2004   15    75    0
C     C1  2006   50    0     15

我希望数据表看起来像这样:

species A1_2001 A2_2001 B1_2001 B1_2004 C1_2006
speca   0       5       0       15      50
specb   1       5       5       75      0
specc   10      15      20      0       15

我尝试使用该tidyr:pivot_longer函数,但这没有得到我想要的结果。

tidyr::pivot_longer(df, 4:length(df), names_to = "species", values_to = "abundance")

有没有一种方法可以通过代码友好的方式来实现,最好使用tidyrtidyverse)?

阿克伦

我们将其重塑为“长”格式,然后使用 pivot_wider

library(dplyr)
library(tidyr)
df %>%
  pivot_longer(cols = starts_with('spec'), names_to = 'species') %>% 
  unite(CodeYear, Code, Year) %>%
  select(-Site) %>%
  pivot_wider(names_from = CodeYear, values_from = value)
# A tibble: 3 x 6
#  species A1_2001 A2_2001 B1_2001 B1_2004 C1_2006
#  <chr>     <int>   <int>   <int>   <int>   <int>
#1 speca         0       5       0      15      50
#2 specb         1       5       5      75       0
#3 specc        10      15      20       0      15

数据

df <- structure(list(Site = c("A", "A", "B", "B", "C"), Code = c("A1", 
"A2", "B1", "B1", "C1"), Year = c(2001L, 2001L, 2001L, 2004L, 
2006L), speca = c(0L, 5L, 0L, 15L, 50L), specb = c(1L, 5L, 5L, 
75L, 0L), specc = c(10L, 15L, 20L, 0L, 15L)), class = "data.frame", 
row.names = c(NA, 
-5L))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中重组数据帧

来自分类Dev

R中的数据帧从宽格式重组为两列

来自分类Dev

在R中重组数据

来自分类Dev

在 R 中重组数据框

来自分类Dev

在 r 数据帧中重组/堆叠具有重复 ID 的列

来自分类Dev

在R中重组团队数据

来自分类Dev

按列重组R中的数据框

来自分类Dev

根据R中的行号重组数据

来自分类Dev

根据R中的重现值重组数据

来自分类Dev

如何在R中重组数据框

来自分类Dev

在 R 中重组矩阵或数据框

来自分类Dev

使用R进行数据重组

来自分类Dev

R:将二维数据帧列表重组为一个数据帧

来自分类Dev

如何使用Python中的Pandas有效地将数据帧重组为日期时间项?

来自分类Dev

使用for循环在R中过滤数据帧

来自分类Dev

使用 NA 在 r 数据帧中索引

来自分类Dev

使用 apply 转换 R 中的数据帧

来自分类Dev

R tidyr传播不适用于数据帧

来自分类Dev

在R中重组日期

来自分类Dev

使用R中不同数据帧的过滤信息从数据帧中的列进行随机采样

来自分类Dev

重组数据框中的数据

来自分类Dev

R中的数据重组(二进制的简短列表)

来自分类Dev

使用 lapply 将单个数据帧子集化为 R 中的数据帧列表

来自分类Dev

如何从r中的单个数据帧中使用随机子集分割数据帧?

来自分类Dev

在R中合并数据帧

来自分类Dev

在R中解包数据帧

来自分类Dev

在R中处理数据帧

来自分类Dev

比较R中的数据帧

来自分类Dev

在R中操纵数据帧