代码之家  ›  专栏  ›  技术社区  ›  tassones

在R中,如何基于第二个数据帧中的组保留一个数据帧中的所有行?

  •  1
  • tassones  · 技术社区  · 5 年前

    如何将这些行保存在一个数据帧中( df1 keep_sites )? 在下面的示例数据集中,我有三个数据变量( Data1 Data2 , Data3 Site ). 我想把所有的行都保留在 df1型 保留\u站点 数据帧。

    示例数据集:

    df1 <- data.frame(matrix(ncol = 4, nrow = 12))
    x <- c("Site","Data1","Data2","Data3")
    colnames(df1) <- x
    df1$Site <- rep(c("A","B","C","D"),3)
    set.seed(99)
    df1$Data1 <- rnorm(12,4,1)
    df1$Data2 <- rnorm(12,16,2)
    df1$Data3 <- rnorm(12,32,4)
    df1[order(df1$Site, decreasing = FALSE),]
    
    keep_sites <- data.frame(matrix(ncol = 1, nrow = 2))
    y <- "Site"
    colnames(keep_sites)[1] <- y
    keep_sites[1,1] <- "A"
    keep_sites[2,1] <- "C"
    

    我尝试过这个方法,但它只返回与第一个站点(site)相关联的行 A )在 :

    df2 <- df1[df1$Site == keep_sites$Site,]
    

       Site    Data1     Data2    Data3
    1     A 4.213963 17.500109 32.89067
    5     A 3.637162 15.211962 26.53026
    9     A 3.635883 18.197843 31.41482
    3     C 4.087829  9.918132 34.73457
    7     C 3.136155 16.997263 37.49222
    11    C 3.254231 15.881167 22.82112
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   akrun    5 年前

    我们需要 %in% ==

    out <- df1[df1$Site %in% keep_sites$Site,]
    out <- out[order(out$Site),]
    

    subset

    subset(df1, Site %in% keep_sites$Site)