【问题标题】:Reorganizng dataframes with dplyr使用 dplyr 重新组织数据帧
【发布时间】:2018-10-21 23:40:16
【问题描述】:

数据

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) 应该包含exemplo1exemplo2exemplo3exemplo4、@987654327 的第一列 @和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) 也是如此。它应该包含exemplo1exemplo2exemplo3exemplo4exemplo5exemplo6 的第二列**。等等……

如何在维护列名的同时执行此操作(可能使用dplyr)?

【问题讨论】:

  • 你有必要拥有 6 个数据帧吗?为什么不将它们合二为一呢?
  • @JackBrookes 是的。因为每个数据框都属于我工作中的特定国家/地区。
  • 您是只对dplyr 解决方案感兴趣还是也对基础R 解决方案持开放态度?
  • @RonakShah 一个开放的基地也会很有趣。
  • @Laura 为什么不能有一个大型数据框,其中包含指定国家/地区的“国家”列?那将是正常的做法。如果你的作品添加了另一个国家怎么办?您是否要为每个国家/地区每次复制和粘贴代码?

标签: r dplyr


【解决方案1】:

使用基础 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]] 是您的第二个数据帧,依此类推。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多