r - 如何使用R或PowerShell从文本文件中提取数据?

标签 r powershell powershell-2.0 text-processing

我有一个包含如下数据的文本文件:

This is just text
-------------------------------
Username:          SOMETHI           C:                 [Text]
Account:           DFAG              Finish time:        1-JAN-2011 00:31:58.91
Process ID:        2028aaB           Start time:        31-DEC-2010 20:27:15.30

This is just text
-------------------------------
Username:          SOMEGG            C:                 [Text]
Account:           DFAG              Finish time:        1-JAN-2011 00:31:58.91
Process ID:        20dd33DB          Start time:        12-DEC-2010 20:27:15.30

This is just text
-------------------------------
Username:          SOMEYY            C:                 [Text]
Account:           DFAG              Finish time:        1-JAN-2011 00:31:58.91
Process ID:        202223DB          Start time:        15-DEC-2010 20:27:15.30

有没有办法从这种数据中提取用户名,完成时间,开始时间?我正在寻找一些使用R或Powershell的起点。

最佳答案

R可能不是处理文本文件的最佳工具,但是您可以按照以下步骤进行操作:通过将文件读取为固定宽度的文件来识别两列,通过在冒号上拆分字符串将字段与其值分开,并添加一个“id”列,然后将所有内容放回原处。

# Read the file
d <- read.fwf("A.txt", c(37,100), stringsAsFactors=FALSE)

# Separate fields and values
d <- d[grep(":", d$V1),]
d <- cbind( 
  do.call( rbind, strsplit(d$V1, ":\\s+") ), 
  do.call( rbind, strsplit(d$V2, ":\\s+") ) 
)

# Add an id column
d <- cbind( d, cumsum( d[,1] == "Username" ) )

# Stack the left and right parts
d <- rbind( d[,c(5,1,2)], d[,c(5,3,4)] )
colnames(d) <- c("id", "field", "value")
d <- as.data.frame(d)
d$value <- gsub("\\s+$", "", d$value)

# Convert to a wide data.frame
library(reshape2)
d <- dcast( d, id ~ field )

关于r - 如何使用R或PowerShell从文本文件中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8987536/

相关文章:

r - 连接data.table时如何找到最近的最大值

powershell - 以 powershell 方式连接对象数组的属性

r - 如何创建具有定义行数的 data.frame?

r - 如何将 htest 列表存储到矩阵中?

powershell - 从 Select-Object 语句连接两个属性

powershell - 如何获取 “Invoke-Expression”的状态,成功还是失败?

powershell - 在 Powershell 中获取解析的文件路径

powershell - CruiseControl.Net 不能很好地与 PowerShell 配合使用

PowerShell 远程处理给出 "Access is Denied"错误

R 中速率变量的回归