% -6ren">
gpt4 book ai didi

r - 计算数据,按年份和按区域划分的R

转载 作者:行者123 更新时间:2023-12-04 03:10:22 25 4
gpt4 key购买 nike

我有一个很大的生物数据集(无法在Excel中打开),看起来像这样

    year <- c(1990, 1980, 1985, 1980, 1990, 1990, 1980, 1985, 1985,1990, 
1980, 1985, 1980, 1990, 1990, 1980, 1985, 1985,
1990, 1980, 1985, 1980, 1990, 1990, 1980, 1985, 1985)
species <- c('A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'A','A', 'A',
'B', 'B', 'B', 'C', 'C', 'C', 'A', 'A', 'A', 'B', 'B', 'B',
'C', 'C', 'C', 'A')
region <- c(1, 1, 1, 3, 2, 3, 3, 2, 1, 1, 3, 3, 3, 2, 2, 1, 1, 1,1, 3, 3,
3, 2, 2, 1, 1, 1)
df <- data.frame(year, species, region)

df
year species region
1 1990 A 1
2 1980 A 1
3 1985 B 1
4 1980 B 3
5 1990 B 2
6 1990 C 3
7 1980 C 3
8 1985 C 2
9 1985 A 1
10 1990 A 1
11 1980 A 3
12 1985 B 3
13 1980 B 3
14 1990 B 2
15 1990 C 2
16 1980 C 1
17 1985 C 1
18 1985 A 1
19 1990 A 1
20 1980 A 3
21 1985 B 3
22 1980 B 3
23 1990 B 2
24 1990 C 2
25 1980 C 1
26 1985 C 1
27 1985 A 1

我要做的是弄清楚我拥有的三年(1980、1985或1990)中的每个区域(1、2或3)中每种物种(A,B或C)的数量。 。

我希望最终得到一个看起来与此类似的数据集,
      region A_1980 B_1980 C_1980 A_1985 B_1985 C_1985 A_1990 B_1990 C_1990
1 1 0 0 0 0 0 0 0 0 0
2 2 1 1 1 1 1 1 1 1 1
3 3 2 2 2 2 2 2 2 2 2

这样,每一行代表一个地区,每一列代表特定年份中每种物种的数量。我尝试使用 spread函数和 group_by dplyr函数来执行此操作,但是我无法让它做任何接近我想要的事情。

有没有人有什么建议?

最佳答案

像这样吗?

library(dplyr)

df2 <- df %>%
mutate(sp_year = paste(species, year, sep = "_")) %>%
group_by(region) %>%
count(sp_year) %>%
spread(sp_year,n)

df2

这给出了:
# A tibble: 3 x 10
# Groups: region [3]
region A_1980 A_1985 A_1990 B_1980 B_1985 B_1990 C_1980 C_1985 C_1990
<dbl> <int> <int> <int> <int> <int> <int> <int> <int> <int>
1 1 1 3 3 NA 1 NA 2 2 NA
2 2 NA NA NA NA NA 3 NA 1 2
3 3 2 NA NA 3 2 NA 1 NA 1

关于r - 计算数据,按年份和按区域划分的R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53356871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com