【发布时间】:2021-03-13 12:04:05
【问题描述】:
我有一个包含 392 行和 156 列的数据集,表示检测到和未检测到一个物种。每列代表对实地调查的“访问”,而每行代表调查地点,分别表示感兴趣的物种是否记录在每次实地“访问”中,如果没有进行调查,则为 NA在那个特定的时间段内。我按月汇总了我的访问量,因此每列代表“每月访问量”,即给定年份内的 30 天间隔。鉴于我有几年的数据,我创建了连续和连续的月份周期,这些周期跨越了我拥有数据的所有年份。鉴于大多数站点是在不同年份进行的调查,因此每个站点都有几个列(时间段)是唯一的,因此我有很多 NA:我有 0/1 和 59,506 NA 的 1,646 条记录。
我想重组我的数据库,以便我可以删除尽可能多的 NA,方法是不将每一列视为特定时间段,而是将其视为通用时间间隔。因此,不是第 1 列是例如 3/2008-4/2018 的特定时期,而是只有“调查 1”,它将代表每个站点的不同月份和年份。通过在该站点的实际调查期之前删除每个站点的所有 NA,我可以拥有一个更干净、更小的数据库和更少的 NA。想法如下:
从我拥有的这个 df 开始:
df <- read.table(text = "3/2008-4/2018 5/2008-6/2008 7/2009-8/2009 9/2009-10/2009 11/2009-12/2009 01/2010-02/2010 03/2010-04/2010 05/2010-06/2010 07/2010-08/2010
1 NA NA NA NA NA NA 1 1 1
2 NA NA NA 1 0 NA NA NA NA
3 NA NA NA 0 0 NA NA NA NA
4 0 1 0 1 1 1 NA NA NA
5 0 1 NA NA NA 1 0 1 1")
到这个新的df:
df_new <- read.table(text = "v1 v2 v3 v4 V5 V6
1 1 1 1 NA NA NA
2 1 0 NA NA NA NA
3 0 0 NA NA NA NA
4 0 1 0 1 1 1
5 0 1 1 0 1 1")
谁能帮我创建一个代码来做到这一点?谢谢!
【问题讨论】:
标签: r missing-data database