繁体   English   中英

按列名将data.frame拆分为组

[英]Split data.frame into groups by column name

我是R.的新手。我有一个数据框,其列名是这样的:

file_001   file_002   block_001   block_002   red_001   red_002 ....etc'  
  0.05       0.2        0.4         0.006       0.05       0.3
  0.01       0.87       0.56        0.4         0.12       0.06

我想通过列名将它们分成组,以获得如下结果:

group_file
file_001   file_002
  0.05       0.2
  0.01       0.87

group_block
block_001   block_002
  0.4        0.006
  0.56       0.4

group_red
red_001    red_002
  0.05       0.3
  0.12       0.06

...etc'

我的档案很大。 我没有一定数量的团体。 它需要只是列名的开头。

在基础R中,您可以像这样使用subsplit.default来返回data.frames列表:

myDfList <- split.default(dat, sub("_\\d+", "", names(dat)))

这回来了

myDfList
$block
  block_001 block_002
1      0.40     0.006
2      0.56     0.400

$file
  file_001 file_002
1     0.05     0.20
2     0.01     0.87

$red
  red_001 red_002
1    0.05    0.30
2    0.12    0.06

split.default将根据其第二个参数按变量拆分data.frames。 这里,我们使用sub和正则表达式“_ \\ d +”来删除下划线及其后的所有数值,以便返回拆分值“block”,“file”和“red”。

作为旁注,通常最好将这些data.frame保存在列表中,并通过lapply函数与它们lapply 有关一些激励性的例子,请参阅gregor对这篇文章的回答。

谢谢lmo,在使用你的代码之后,它没有按照我的意愿工作,但是由于你的指导,我得到了一个解决方案。

因此,为了划分数据帧列表:

myDfList <- split.default(dat, sub(x = as.character(names(dat)), pattern = "\\_.*", ""))

希望它能在未来帮助人们!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM