r - 根据行中的值将一行分成多个
问题描述
我采用类似于以下的数据框:
GISBLong | GISBLat | B 飞行路线 | B月 | 鸟的数量 |
---|---|---|---|---|
-85.41667 | 42.41667 | 3 | 6 | 3 |
-97.25000 | 36.0833 | 2 | 7 | 2 |
并将其更改为:
GISBLong | GISBLat | B 飞行路线 | B月 | 鸟类编号 |
---|---|---|---|---|
-85.41667 | 42.41667 | 3 | 6 | 1.1 |
-85.41667 | 42.41667 | 3 | 6 | 1.2 |
-85.41667 | 42.41667 | 3 | 6 | 1.3 |
-97.25000 | 36.0833 | 2 | 7 | 2.1 |
-97.25000 | 36.0833 | 2 | 7 | 2.2 |
因此,按“鸟类计数”中的数字拆分行。目前 1 行代表多只鸟,我希望每只鸟有 1 行。关于要使用的功能有什么想法或建议吗?非常感谢。
解决方案
您可以使用dplyr
和tidyr
。让我们df
成为你的data.frame。
library(dplyr)
library(tidyr)
df %>%
mutate(id=row_number()) %>%
uncount(Count_of_Birds) %>%
group_by(id) %>%
mutate(Bird_ID = paste0(id, ".", row_number())) %>%
ungroup() %>%
select(-id)
返回
# A tibble: 5 x 5
GISBLong GISBLat B_Flyway B_Month Bird_ID
<dbl> <dbl> <dbl> <dbl> <chr>
1 -85.4 42.4 3 6 1.1
2 -85.4 42.4 3 6 1.2
3 -85.4 42.4 3 6 1.3
4 -97.2 36.1 2 7 2.1
5 -97.2 36.1 2 7 2.2
数据
df <- readr::read_table2("GISBLong GISBLat B_Flyway B_Month Count_of_Birds
-85.41667 42.41667 3 6 3
-97.25000 36.0833 2 7 2")
推荐阅读
- python-3.x - 使用列表理解的矩阵的行和、列和和对角线和。也摆脱错误:“TypeError:'int'对象不可迭代”
- javascript - 我们如何根据 React 侧边栏中的选项选择在主要部分显示不同的内容?
- android - 使用每个事件更新 Firebase Analytics 用户属性
- java - 如何将 UTC 时间戳转换为亚洲/雅加达时间
- go - 如何将 TestContext 传递给不接受 Gin 上下文作为参数的方法?
- flac - 使用mlt框架导出flac文件播放时间错误
- android - 属性返回与嵌套 RecyclerView.Adapter 中的实际资源不同的颜色 ID
- java - 如何检查Java中的文本字段中是否输入了某个值
- python - 我想知道如何在 Pytorch 中处理 LSTM
- sql - SQL将列值作为枚举返回-来自另一列的GetValue()字段