r - 使用 dplyr 重新组织数据帧
问题描述
数据
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
) 也是如此。它应该包含exemplo1
、exemplo2
、exemplo3
、exemplo4
和exemplo5
的第二列** exemplo6
。等等...
如何在维护列名(可能使用dplyr
)的同时做到这一点?
解决方案
使用基础 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]]
是您的第二个数据框,依此类推。
推荐阅读
- python - 狮身人面像超链接到以别名导入的 Python 模块的成员
- python - pylucene 安装 make 测试失败
- ios - SwiftUI - 反转布尔绑定
- python - Python中的直方图数据可视化(使用matplotlib)
- html - 如何避免 HTML 输入数字的逗号前出现双零?
- android - React Native Expo:修改 VPN 代理
- html - MFC:如何通过 HTML 创建动态 UI?
- python - 为什么这个 python funktion 有 2 个参数?
- machine-learning - 如何使用 tensoflow 实现这个 NN 架构师?
- java - XML 解析 Java DOM