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

用dpylr重新组织数据帧

  •  0
  • Laura  · 技术社区  · 5 年前

    数据

    exemplo1 <- as.data.frame(matrix(, ncol = 6, nrow = 11))
    colnames(exemplo1) <- c(rep("sample1", 6))
    rownames(exemplo1) <- c(letters[1:11])
    
    exemplo2 <- as.data.frame(matrix(, ncol = 6, nrow = 11))
    colnames(exemplo2) <- c(rep("sample2", 6))
    rownames(exemplo2) <- c(letters[1:11])
    
    exemplo3 <- as.data.frame(matrix(, ncol = 6, nrow = 11))
    colnames(exemplo3) <- c(rep("sample3", 6))
    rownames(exemplo3) <- c(letters[1:11])
    
    exemplo4 <- as.data.frame(matrix(, ncol = 6, nrow = 11))
    colnames(exemplo4) <- c(rep("sample4", 6))
    rownames(exemplo4) <- c(letters[1:11])
    
    exemplo5 <- as.data.frame(matrix(, ncol = 6, nrow = 11))
    colnames(exemplo5) <- c(rep("sample5", 6))
    rownames(exemplo5) <- c(letters[1:11])
    
    exemplo6 <- as.data.frame(matrix(, ncol = 6, nrow = 11))
    colnames(exemplo6) <- c(rep("sample6", 6))
    rownames(exemplo6) <- c(letters[1:11])
    

    目标

    根据这些数据,我想创建6个其他数据帧。

    这个 第一数据帧 ( final1 )应该包含 第一列 属于 exemplo1 , exemplo2 , exemplo3 , exemplo4 , exemplo5 exemplo6 :

    final1 <- as.data.frame(matrix(, ncol = 6, nrow = 11))
    colnames(final1) <- c('sample1','sample2','sample3','sample4','sample5','sample6')
    rownames(final1) <- c('a','b','c','d','e','f','g','h','i','j','k')
    

    第二个数据帧也是这样( final2 )它应该包含第二列**,共列 ExpFult1 , ExfSurviv2 , ExpSurviv3 , ExpSuff4 , ExpSurviv5 ExpSurviv6 . 等等…

    在维护列名称(可能使用 dplyr )?

    1 回复  |  直到 5 年前
        1
  •  2
  •   Ronak Shah    5 年前

    使用碱基R的溶液。

    您可以在一个列表中添加所有数据帧,因为它很容易处理数据帧列表。现在,从每个列表中,我们一列一列地提取, cbind 并将其作为数据帧添加到列表中。这假设所有数据帧的列数都相同。

    lst <- list(exemplo1, exemplo2, exemplo3, exemplo4, exemplo5, exemplo6)
    final <- lapply(1:ncol(exemplo1), function(x) Reduce(cbind, lapply(lst, "[", x)))
    

    现在, final[[1]] 是你的第一个数据帧, final[[2]] 是您的第二个数据帧等等。