r - 计数数据除以 R 中的年份和地区
问题描述
我有一个非常大(太大而无法在 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
推荐阅读
- sql - 通过通知顺序执行 SQL Server 存储过程
- javascript - 删除后反应动态行输入值仍然存在
- mongodb - 使用 findOne() 或 findOneAndRemove() 等 mongoose 方法的集合遍历顺序
- java - ClassNotFoundException:在路径上找不到类“clipper”:DexPathList - Android Studio
- javascript - 将表单值附加到操作 url - 动态
- coq - CoqIde 关于自动战术的奇怪信息
- c# - 如何获取不包含标志
- php - 通过 curl 调用 google api url 缩短器在 php 中返回 HTTP 403 状态
- java - 将文件值读取到 Java 中的文本区域
- sockets - Flutter Dart Socket 中的 java socket.setSoLinger(true,0) 等价物是什么?