使用 sed 提取 R 摘要



我想使用 sed 将 R 的 data.frame 摘要的标准输出转换为 CSV。

假设我有 5 列用逗号分隔的信息,其中一列称为持续时间。

...,       duration          , ...
..., Min.   : 0.000 ,...   
..., 1st Qu.: 2.000 ,...   
..., Median : 5.000 ,...    
..., Mean   : 6.004 ,... 
..., 3rd Qu.: 9.000 ,...   
..., Max.   :15.000 ,...    
..., NA's   :18711 ,...        

如何使用 sed 仅提取每行冒号之后和后续逗号之前包含的信息?(或者,用空白的 spance 替换冒号和前面逗号之间的所有信息)。

谢谢!

有了awk,你可以尝试这样的事情:

awk -F, '{split($3,ary,/:/); print ary[2]}' input

您需要更改$3的位置,其中包含持续时间列的列号。

我会在R中做更多的事情。summary() 的输出有点丑陋,是字符值的矩阵。这将首先从该表中提取值作为字符值,然后作为数字提取。

apply( summary(df1), 2, function(x) sapply( strsplit(x, ":"), "[[", 2))
      Year     Site1
 "2006  "  "1.000  "
 "2007  "  "1.625  "
 "2008  "  "2.600  "
 "2008  "  "2.283  "
 "2010  "  "2.975  "
 "2011  "  "3.100  "
apply( summary(df1), 2, function(x) as.numeric( sapply( strsplit(x, ":"), "[[", 2)))
          Year     Site1
[1,]      2006     1.000
[2,]      2007     1.625
[3,]      2008     2.600
[4,]      2008     2.283
[5,]      2010     2.975
[6,]      2011     3.100

"[["只是一个提取函数,通常用于中缀语法,但它也可以以更典型的R功能方式使用"[["( . , .)strsplit创建的对象内容的每个单独值都将提取其第二个参数。

sed "s/.*:([^,]*).*/1/"

替代品 ( s/.../.../

匹配所有内容,包括冒号(.*:

第一个()之间的内容被捕获到1中,可用于替换

匹配(并捕获)所有内容,只要它不是逗号([^,]*

匹配行的其余部分(因此它也会被替换)(.*

最后用您捕获的部分替换之前匹配的所有内容(1

相关内容

  • 没有找到相关文章

最新更新