[R] split character line into rows

arun smartpink111 at yahoo.com
Mon Dec 17 21:34:47 CET 2012


Hi,
This could also work:
 max(nchar(txt))
#[1] 58
res<-read.table(text=substr(txt[nchar(txt)>20],5,58),sep="",dec=",",header=FALSE,stringsAsFactors=FALSE)
 res
#          V1       V2     V3    V4 V5
#1 2010.12.26 00:00:52 688.88 11.69 43
#2 2010.12.26 00:01:52 696.19 11.69 43
A.K.




----- Original Message -----
From: David Winsemius <dwinsemius at comcast.net>
To: Simonas Kecorius <simolas2008 at gmail.com>
Cc: r-help at r-project.org
Sent: Monday, December 17, 2012 3:15 PM
Subject: Re: [R] split character line into rows


On Dec 17, 2012, at 4:04 AM, Simonas Kecorius wrote:

> Hey R users,
> 
> suppose we have data:
> 
txt <- readLines(textConnection("[1] 2010.12.26 00:00:52    688,88          11,69     43,00
[2] 11,69     43,00
[3] 11,69     43,00
[4] 11,69     43,00
[5] 11,69     43,00
[6] 11,69     43,00
[7] 11,69     43,00
[8] 11,69     43,00
[9] 11,69     43,00
[10] 11,69     43,00
[11] 11,69     43,00
[12] 11,69     43,00
[13] 11,69     43,00
[14] 11,69     43,00
[15] 11,69     43,00
[16] 11,69     43,00
[17] 11,69     43,00
[18] 11,69     43,00
[19] 11,69     43,00
[20] 11,69     43,00
[21] 11,69     43,00
[22] 11,69     43,00
[23] 11,69     43,00
[24] 11,69     43,00
[25] 11,69     43,00
[26] 11,69     43,00
[27] 11,69     43,00
[28] 11,69     43,00
[29] 11,69     43,00
[30] 11,69     43,00
[31] 11,69     43,00
[32] 11,69     43,00
[33] 11,69     43,00
[34] 11,69     43,00
[35] 11,69     43,00
[36] 11,69     43,00
[37] 11,69     43,00
[38] 11,69     43,00
[39] 11,69     43,00
[40] 11,69     43,00
[41] 11,69     43,00
[42] 11,69     43,00
[43] 11,69     43,00
[44] 11,69     43,00
[45] 11,69     43,00
[46] 11,69     43,00
[47] 11,69     43,00
[48] 11,69     43,00
[49] 11,69     43,00
[50] 11,69     43,00
[51] 11,69     43,00
[52] 11,69     43,00
[53] 11,69     43,00
[54] 11,69     43,00
[55] 11,69     43,00
[56] 11,69     43,00
[57] 11,69     43,00
[58] 11,69     43,00
[59] 11,69     43,00
[60] 11,69     43,00
[61] 2010.12.26 00:01:52    696,19          11,69     43,00
[62] 11,69     43,00
[63] 11,69     43,00
[64] 11,69     43,00
[65] 11,69     43,00
[66] 11,69     43,00"))

txt <- sub("\\[.+\\]","", txt)
read.table(text=txt[ grepl("[[:digit:]]{4}\\.", txt) ] )
          V1       V2     V3    V4    V5
1 2010.12.26 00:00:52 688,88 11,69 43,00
2 2010.12.26 00:01:52 696,19 11,69 43,00

Since you seemed to be using commas for decimal points I thought search for "NNNN." as a pattern might be sufficient, but you could extend that to a full date matching pattern if needed.


> ..................................... etc.
> 
> Is there a way to split data into date column, V2, V3 and V4 columns and
> erase those lines without date, so that data would look like that:
> 
> date                             V2       V3       V4
> 2010.12.26 00:01:52     555     11.67     44
> 2010.12.26 00:02:52     566     11.67     44
> 
> etc.
> 
> Thanks a lot!
> 
> 
> -- 
> Simonas Kecorius
> **
> 
>     [[alternative HTML version deleted]]

Please read the Posting Guide and learn to post in plain text.


David Winsemius
Alameda, CA, USA

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.





More information about the R-help mailing list