Kei*_*ity 5 r strsplit dataframe
我是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
Run Code Online (Sandbox Code Playgroud)
我想通过列名将它们分成组,以获得如下结果:
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'
Run Code Online (Sandbox Code Playgroud)
我的档案很大.我没有一定数量的团体.它需要只是列名的开头.
在基础R中,您可以使用sub并split.default像这样返回data.frames列表:
myDfList <- split.default(dat, sub("_\\d+", "", names(dat)))
Run Code Online (Sandbox Code Playgroud)
这回来了
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
Run Code Online (Sandbox Code Playgroud)
split.default将根据其第二个参数按变量拆分data.frames.这里,我们使用sub正则表达式"_\d +"来删除下面的下划线和所有数值,以便返回拆分值"block","file"和"red".
作为旁注,通常最好将这些data.frame保存在列表中,并通过类似的函数与它们一起使用lapply.有关一些激励性的例子,请参阅gregor对这篇文章的回答.