微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R - 如何将数据帧的列拆分为单个数据帧,每个数据帧都包含来自原始数据帧的“物种”列?

如何解决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 举报,一经查实,本站将立刻删除。