首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed提取R摘要

使用sed提取R摘要
EN

Stack Overflow用户
提问于 2014-02-25 18:31:50
回答 3查看 98关注 0票数 0

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

假设我有5列用逗号分隔的信息,其中一列被称为工期。

代码语言:javascript
复制
...,       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仅提取每一行冒号后面和后面逗号之前包含的信息?(或者,用空格替换冒号和前面逗号之间的所有信息)。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-25 18:36:20

使用awk,您可以尝试这样的方法:

代码语言:javascript
复制
awk -F, '{split($3,ary,/:/); print ary[2]}' input

其中,您需要用持续时间列的列号来更改$3

票数 1
EN

Stack Overflow用户

发布于 2014-02-25 20:28:42

我会在R中做得更多,摘要()的输出有点难看,是字符值的矩阵。这将从该表中提取值,首先作为字符值,然后作为数字。

代码语言:javascript
复制
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

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

票数 1
EN

Stack Overflow用户

发布于 2014-02-25 22:12:57

代码语言:javascript
复制
sed "s/.*:\([^,]*\).*/\1/"

替代物(s/.../.../)

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

第一个\(\)之间的什么被捕获到\1中,它可以用于替换

匹配(并捕获)一切,只要它不是逗号([^,]*)

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22023068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档