如何解决R - 如何将数据帧的列拆分为单个数据帧,每个数据帧都包含来自原始数据帧的“物种”列?
我不确定如何准确地表达标题。本质上,我希望从这个输入开始(让我们称这个数据框为 sampledata)
sample1 | sample2 | sample3 | sample4 | sample5 | 物种 |
---|---|---|---|---|---|
5 | 2 | 3 | 5 | 0 | A。拟南芥 |
2 | 1 | 4 | 6 | 1 | E。大肠杆菌 |
到这个想要的输出
sample1 | 物种 |
---|---|
5 | A。拟南芥 |
2 | E。大肠杆菌 |
sample2 | 物种 |
---|---|
2 | A。拟南芥 |
1 | E。大肠杆菌 |
... 并为每个表继续这个,所以我会有 5 个单独的数据帧。在我的脑海里,我会通过做 sample1df 然后做 sample1df 来做到这一点,然后对每个样本重复。但是,我有一种预感,这可以以更有效的方式完成,这将使我的脚本更加干净。是否可以编写某种 for 循环来执行此操作?我还是 R 的新手,希望得到任何帮助:)
解决方法
如果你的数据框是 df 那么
dframes <- lapply(1:5,function(x) df[,c(x,6)])
或概括:
ncols <- ncol(df)
n <- ncols - 1
dframes <- lapply(1:n,ncols)])
,
我们可以循环遍历 'sample' 列名,select
该列以及 loop
中的 'species' 并将输出存储在 list
中
nm1 <- grep('sample',names(df1),value = TRUE)
lst1 <- lapply(nm1,function(nm) df1[c(nm1','species')])
注意:即使它在任何位置,这也会选取“样本”列。所以,泛化实际上发生在这里
,非常基础 基R子集并选择
sample1df <- subset(sampledata,select = c(1,6))
sample2df <- subset(sampledata,5))
sample3df <- subset(sampledata,4))
sample4df <- subset(sampledata,3))
sample5df <- subset(sampledata,2))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。