【问题标题】:Adding identifer (metadata) columns to a long format data set将标识符(元数据)列添加到长格式数据集中
【发布时间】:2013-08-01 17:48:13
【问题描述】:

给定一个像这样的长格式数据集:

ID_2<-c('A','A','A','B','B','C','E','E','F','F','H','H','H')
Type<-c('Blk','Wht','Gre','Blk','Wht','Blk','Blk','Wht','Blk','Wht','Wht','Blk','Gre')
Count<-c(1,2,2,1,2,1,2,1,2,1,2,1,2)
DF2<-data.frame(ID_2,Type,Count)

我想为每个唯一 ID (ID_2) 添加一组特定的元数据。元数据将在一个单独的数据框中找到,如下所示:

Year<-c(2005,2005,2006,2006,2007,2008,2008,2008)
Location<-c('EAST','EAST','WEST','WEST','NORTH','EAST','EAST','EAST')
Site<-c(1,2,3,4,5,6,7,8)
ID_1<-c('A','B','C','NAN','E','F','NAN','H')
DF1<-data.frame(Year,Location,Site,ID_1)

我想将 DF1 中的元数据添加到 DF2 的长格式中(匹配 ID_1 和 ID_2),以便 DF2 的每一行都包含来自 DF1 的正确元数据

我还需要处理空白位置,以便来自 DF_1 且在 DF_2 中没有相应数据条目的任何唯一站点编号都会获得标记条目。最终结果如下所示:

Year  Location  Site  ID Type Count
2005     EAST    1    A  Blk     1
2005     EAST    1    A  Wht     2
2005     EAST    1    A  Gre     2
2005     EAST    2    B  Blk     1
2006     WEST    3    C  Blk     1
2007    NORTH    5    E  Blk     2
2007    NORTH    5    E  Wht     1
2008     EAST    6    F  Blk     2
2008     EAST    6    F  Wht     1
2008     EAST    8    H  Wht     2
2008     EAST    8    H  Blk     1
2008     EAST    8    H  Gre     2
2006     WEST    4  Flag Flag   -999
2008     EAST    7  Flag Flag   -999

【问题讨论】:

    标签: r dataframe metadata


    【解决方案1】:

    这似乎是一个简单的merge()

    > merge(DF1, DF2, by.x = "ID_1", by.y = "ID_2", all = TRUE)
       ID_1 Year Location Site Type Count
    1     A 2005     EAST    1  Blk     1
    2     A 2005     EAST    1  Wht     2
    3     A 2005     EAST    1  Gre     2
    4     B 2005     EAST    2  Blk     1
    5     B 2005     EAST    2  Wht     2
    6     C 2006     WEST    3  Blk     1
    7     E 2007    NORTH    5  Blk     2
    8     E 2007    NORTH    5  Wht     1
    9     F 2008     EAST    6  Blk     2
    10    F 2008     EAST    6  Wht     1
    11    H 2008     EAST    8  Wht     2
    12    H 2008     EAST    8  Blk     1
    13    H 2008     EAST    8  Gre     2
    14  NAN 2006     WEST    4 <NA>    NA
    15  NAN 2008     EAST    7 <NA>    NA
    

    您必须做一些额外的工作才能将 NA 值替换为您实际想要使用的任何值。

    【讨论】:

    • 好点-我想合并两个数据框,它们必须具有相同的行数。我看我错了。只是为了完成这个,替换 NA's-----Merged$Count[is.na(Merged$Count)]
    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 2021-11-30
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多