[R] read txt file - date - no space
PIKAL Petr
petr@p|k@| @end|ng |rom prechez@@cz
Wed Aug 1 15:09:18 CEST 2018
Hi
see in line
From: Diego Avesani <diego.avesani using gmail.com>
Sent: Wednesday, August 1, 2018 2:30 PM
To: PIKAL Petr <petr.pikal using precheza.cz>
Cc: r-help mailing list <r-help using r-project.org>
Subject: Re: [R] read txt file - date - no space
Dear Pikal, Deal all,
again really thank.
it seems not working.
Some specifications: My non data are -999, but I could change it.
You must change it to NA. How the poor R should know that -999 is missing and not a real value.
something like
Mydata[Mydata== -999] <- NA
should do it.
My final results is:
1 1 -55.86242 -55.84764660 -277.4775
2 2 -55.47554 -94.58921682 -277.4845
3 3 -55.47095 -99.20239198 -277.4709
4 4 -55.46470 -55.45952932 -392.9071
5 5 -55.43335 -55.40171682 -388.4110
6 6 -55.40108 -55.37399691 -332.9068
7 7 -55.39201 -55.35156250 -332.8902
8 8 -110.87184 0.16136188 -281.8230
9 9 -110.95077 -55.63856096 -332.9564
10 10 -157.64430 -0.06602705 -315.3840
11 11 -105.06157 0.11507675 -315.4152
12 12 -70.08677 -52.54501096 -316.7247
So it is not correct.
For example for the first day in my csv I would have expected 0.167.
I am going to post what you have suggested:
for str(MyData)
Your data seems to be OK, so after you change your -999 to NA everything should be OK.
'data.frame': 160008 obs. of 4 variables:
$ date: POSIXct, format: "1998-01-10 00:00:00" "1998-01-10 01:00:00" "1998-01-10 02:00:00" "1998-01-10 03:00:00" ...
$ str1: num 0.6 0.2 0.6 0 0 0 0 0.2 0.6 0.2 ...
$ str2: num 0 0.2 0.2 0 0 0 0 0 0.2 0.4 ...
$ str3: num 0 0.2 0.4 0.6 0 0 0 0 0 0.4 ...
unfortunately, I am not able to post
dput(str[1:20,])
it gives me
Error in str[1:20, ] : object of type 'closure' is not subsettable
dput(MyData[1:20,])
I would recommend you to spend some time reading R-intro which should be located in doc/manual folder of your installation. It could help you in many situations.
Cheers
Petr
Thanks again,
I hope that what I posted could be enough in order to help me.
Diego
On 1 August 2018 at 13:58, PIKAL Petr <petr.pikal using precheza.cz<mailto:petr.pikal using precheza.cz>> wrote:
Hi
I did not get through all answers you already got and you probably obtained similar advice as mine.
# read data (if you have csv file just use read.csv)
> test<-read.table("clipboard", header=T, sep=",")
# control your object(s)
> str(test)
'data.frame': 8 obs. of 4 variables:
$ date: Factor w/ 8 levels "10/1/1998 0:00",..: 1 2 3 4 5 6 7 8
$ str1: num 0.6 0.2 0.6 0 0 0 0 0.2
$ str2: num 0 0.2 0.2 0 0 0 0 0
$ str3: num 0 0.2 0.4 0.6 0 0 0 0
#if it is OK change first column to real date by POSIXct
test$date<-as.POSIXct(test$date, format="%d/%m/%Y %H:%M")
#attach lubridate
> library(lubridate)
# aggregate your object(s) and use lubridate function
> aggregate(test[,-1], list(day(test$date)), mean)
Group.1 str1 str2 str3
1 10 0.2 0.05 0.15
# or format function
> aggregate(test[,-1], list(format(test$date, "%Y-%m-%d")), mean)
Group.1 str1 str2 str3
1 1998-01-10 0.2 0.05 0.15
If it does not work with your data you should post at least result of
str(yourdata)
or preferably
dput(yourdata[1:20,])
Cheers
Petr
> -----Original Message-----
> From: R-help <r-help-bounces using r-project.org<mailto:r-help-bounces using r-project.org>> On Behalf Of Diego Avesani
> Sent: Wednesday, August 1, 2018 8:55 AM
> To: Jeff Newmiller <jdnewmil using dcn.davis.ca.us<mailto:jdnewmil using dcn.davis.ca.us>>
> Cc: r-help mailing list <r-help using r-project.org<mailto:r-help using r-project.org>>
> Subject: Re: [R] read txt file - date - no space
>
> Dear all,
> I am sorry, I did a lot of confusion. I am sorry, I have to relax and stat all again
> in order to understand.
> If I could I would like to start again, without mixing strategy and waiting for
> your advice.
>
> I am really appreciate you help, really really.
> Here my new file, a *.csv file (buy the way, it is possible to attach it in the
> mailing list?)
>
> date,str1,str2,str3
> 10/1/1998 0:00,0.6,0,0
> 10/1/1998 1:00,0.2,0.2,0.2
> 10/1/1998 2:00,0.6,0.2,0.4
> 10/1/1998 3:00,0,0,0.6
> 10/1/1998 4:00,0,0,0
> 10/1/1998 5:00,0,0,0
> 10/1/1998 6:00,0,0,0
> 10/1/1998 7:00,0.2,0,0
>
>
> I read it as:
> MyData <- read.csv(file="obs_prec.csv",header=TRUE, sep=",")
>
> at this point I would like to have the daily mean.
> What would you suggest?
>
> Really Really thanks,
> You are my lifesaver
>
> Thanks
>
>
>
> Diego
>
>
> On 1 August 2018 at 01:01, Jeff Newmiller <jdnewmil using dcn.davis.ca.us<mailto:jdnewmil using dcn.davis.ca.us>> wrote:
>
> > ... and the most common source of NA values in time data is wrong
> > timezones. You really need to make sure the timezone that is assumed
> > when the character data are converted to POSIXt agrees with the data.
> > In most cases the easiest way to insure this is to use
> >
> > Sys.setenv(TZ="US/Pacific")
> >
> > or whatever timezone from
> >
> > OlsonNames()
> >
> > corresponds with your data. Execute this setenv function before the
> > strptime or as.POSIXct() function call.
> >
> > You can use
> >
> > MyData[ is.na<http://is.na>(MyData$datetime), ]
> >
> > to see which records are failing to convert time.
> >
> > [1] https://github.com/jdnewmil/eci298sp2016/blob/master/QuickHowto1
> >
> > On July 31, 2018 3:04:05 PM PDT, Jim Lemon <drjimlemon using gmail.com<mailto:drjimlemon using gmail.com>>
> wrote:
> > >Hi Diego,
> > >I think the error is due to NA values in your data file. If I extend
> > >your example and run it, I get no errors:
> > >
> > >MyData<-read.table(text="103001930 103001580 103001530
> > >1998-10-01 00:00:00 0.6 0 0
> > >1998-10-01 01:00:00 0.2 0.2 0.2
> > >1998-10-01 02:00:00 0.6 0.2 0.4
> > >1998-10-01 03:00:00 0 0 0.6
> > >1998-10-01 04:00:00 0 0 0
> > >1998-10-01 05:00:00 0 0 0
> > >1998-10-01 06:00:00 0 0 0
> > >1998-10-01 07:00:00 0.2 0 0
> > >1998-10-01 08:00:00 0.6 0 0
> > >1998-10-01 09:00:00 0.2 0.2 0.2
> > >1998-10-01 10:00:00 0.6 0.2 0.4
> > >1998-10-01 11:00:00 0 0 0.6
> > >1998-10-01 12:00:00 0 0 0
> > >1998-10-01 13:00:00 0 0 0
> > >1998-10-01 14:00:00 0 0 0
> > >1998-10-01 15:00:00 0.2 0 0
> > >1998-10-01 16:00:00 0.6 0 0
> > >1998-10-01 17:00:00 0.2 0.2 0.2
> > >1998-10-01 18:00:00 0.6 0.2 0.4
> > >1998-10-01 19:00:00 0 0 0.6
> > >1998-10-01 20:00:00 0 0 0
> > >1998-10-01 21:00:00 0 0 0
> > >1998-10-01 22:00:00 0 0 0
> > >1998-10-01 23:00:00 0.2 0 0
> > >1998-10-02 00:00:00 0.6 0 0
> > >1998-10-02 01:00:00 0.2 0.2 0.2
> > >1998-10-02 02:00:00 0.6 0.2 0.4
> > >1998-10-02 03:00:00 0 0 0.6
> > >1998-10-02 04:00:00 0 0 0
> > >1998-10-02 05:00:00 0 0 0
> > >1998-10-02 06:00:00 0 0 0
> > >1998-10-02 07:00:00 0.2 0 0
> > >1998-10-02 08:00:00 0.6 0 0
> > >1998-10-02 09:00:00 0.2 0.2 0.2
> > >1998-10-02 10:00:00 0.6 0.2 0.4
> > >1998-10-02 11:00:00 0 0 0.6
> > >1998-10-02 12:00:00 0 0 0
> > >1998-10-02 13:00:00 0 0 0
> > >1998-10-02 14:00:00 0 0 0
> > >1998-10-02 15:00:00 0.2 0 0
> > >1998-10-02 16:00:00 0.6 0 0
> > >1998-10-02 17:00:00 0.2 0.2 0.2
> > >1998-10-02 18:00:00 0.6 0.2 0.4
> > >1998-10-02 19:00:00 0 0 0.6
> > >1998-10-02 20:00:00 0 0 0
> > >1998-10-02 21:00:00 0 0 0
> > >1998-10-02 22:00:00 0 0 0
> > >1998-10-02 23:00:00 0.2 0 0",
> > >skip=1,stringsAsFactors=FALSE)
> > >names(MyData)<-c("date","time","st1","st2","st3")
> > >MyData$datetime<-strptime(paste(MyData$date,MyData$time),
> > > format="%Y-%m-%d %H:%M:%S")
> > >MyData$datetime
> > >st1_daily<-by(MyData$st1,MyData$date,mean)
> > >st2_daily<-by(MyData$st2,MyData$date,mean)
> > >st3_daily<-by(MyData$st3,MyData$date,mean)
> > >st1_daily
> > >st2_daily
> > >st3_daily
> > >
> > >Try adding na.rm=TRUE to the "by" calls:
> > >
> > >st1_daily<-by(MyData$st1,MyData$date,mean,na.rm=TRUE)
> > >st2_daily<-by(MyData$st2,MyData$date,mean,na.rm=TRUE)
> > >st3_daily<-by(MyData$st3,MyData$date,mean,na.rm=TRUE)
> > >
> > >Jim
> > >
> > >On Tue, Jul 31, 2018 at 11:11 PM, Diego Avesani
> > ><diego.avesani using gmail.com<mailto:diego.avesani using gmail.com>> wrote:
> > >> Dear all,
> > >>
> > >> I have still problem with date.
> > >> Could you please tel me how to use POSIXct.
> > >> Indeed I have found this command:
> > >> timeAverage, but I am not able to convert MyDate to properly date.
> > >>
> > >> Thank a lot
> > >> I hope to no bother you, at least too much
> > >>
> > >>
> > >> Diego
> > >>
> > >>
> > >> On 31 July 2018 at 11:12, Diego Avesani <diego.avesani using gmail.com<mailto:diego.avesani using gmail.com>>
> > >wrote:
> > >>>
> > >>> Dear Jim, Dear all,
> > >>>
> > >>> thanks a lot.
> > >>>
> > >>> Unfortunately, I get the following error:
> > >>>
> > >>>
> > >>> st1_daily<-by(MyData$st1,MyData$date,mean)
> > >>> Error in tapply(seq_len(0L), list(`MyData$date` = c(913L, 914L,
> > >925L, :
> > >>> arguments must have same length
> > >>>
> > >>>
> > >>> This is particularly strange. indeed, if I apply
> > >>>
> > >>>
> > >>> mean(MyData$str1,na.rm=TRUE)
> > >>>
> > >>>
> > >>> it works
> > >>>
> > >>>
> > >>> Sorry, I have to learn a lot.
> > >>> You are really boosting me
> > >>>
> > >>> Diego
> > >>>
> > >>>
> > >>> On 31 July 2018 at 11:02, Jim Lemon <drjimlemon using gmail.com<mailto:drjimlemon using gmail.com>> wrote:
> > >>>>
> > >>>> Hi Diego,
> > >>>> One way you can get daily means is:
> > >>>>
> > >>>> st1_daily<-by(MyData$st1,MyData$date,mean)
> > >>>> st2_daily<-by(MyData$st2,MyData$date,mean)
> > >>>> st3_daily<-by(MyData$st3,MyData$date,mean)
> > >>>>
> > >>>> Jim
> > >>>>
> > >>>> On Tue, Jul 31, 2018 at 6:51 PM, Diego Avesani
> > ><diego.avesani using gmail.com<mailto:diego.avesani using gmail.com>>
> > >>>> wrote:
> > >>>> > Dear all,
> > >>>> > I have found the error, my fault. Sorry.
> > >>>> > There was an extra come in the headers line.
> > >>>> > Thanks again.
> > >>>> >
> > >>>> > If I can I would like to ask you another questions about the
> > >imported
> > >>>> > data.
> > >>>> > I would like to compute the daily average of the different date.
> > >>>> > Basically I
> > >>>> > have hourly data, I would like to ave the daily mean of them.
> > >>>> >
> > >>>> > Is there some special commands?
> > >>>> >
> > >>>> > Thanks a lot.
> > >>>> >
> > >>>> >
> > >>>> > Diego
> > >>>> >
> > >>>> >
> > >>>> > On 31 July 2018 at 10:40, Diego Avesani
> > >>>> > <diego.avesani using gmail.com<mailto:diego.avesani using gmail.com>>
> > >>>> > wrote:
> > >>>> >>
> > >>>> >> Dear all,
> > >>>> >> I move to csv file because originally the date where in csv
> > >file.
> > >>>> >> In addition, due to the fact that, as you told me, read.csv is
> > >>>> >> a special case of read.table, I prefer start to learn from the
> > >>>> >> simplest
> > >one.
> > >>>> >> After that, I will try also the *.txt format.
> > >>>> >>
> > >>>> >> with read.csv, something strange happened:
> > >>>> >>
> > >>>> >> This us now the file:
> > >>>> >>
> > >>>> >> date,st1,st2,st3,
> > >>>> >> 10/1/1998 0:00,0.6,0,0
> > >>>> >> 10/1/1998 1:00,0.2,0.2,0.2
> > >>>> >> 10/1/1998 2:00,0.6,0.2,0.4
> > >>>> >> 10/1/1998 3:00,0,0,0.6
> > >>>> >> 10/1/1998 4:00,0,0,0
> > >>>> >> 10/1/1998 5:00,0,0,0
> > >>>> >> 10/1/1998 6:00,0,0,0
> > >>>> >> 10/1/1998 7:00,0.2,0,0
> > >>>> >> 10/1/1998 8:00,0.6,0.2,0
> > >>>> >> 10/1/1998 9:00,0.2,0.4,0.4
> > >>>> >> 10/1/1998 10:00,0,0.4,0.2
> > >>>> >>
> > >>>> >> When I apply:
> > >>>> >> MyData <- read.csv(file="obs_prec.csv",header=TRUE, sep=",")
> > >>>> >>
> > >>>> >> this is the results:
> > >>>> >>
> > >>>> >> 10/1/1998 0:00 0.6 0.00 0.0 NA
> > >>>> >> 2 10/1/1998 1:00 0.2 0.20 0.2 NA
> > >>>> >> 3 10/1/1998 2:00 0.6 0.20 0.4 NA
> > >>>> >> 4 10/1/1998 3:00 0.0 0.00 0.6 NA
> > >>>> >> 5 10/1/1998 4:00 0.0 0.00 0.0 NA
> > >>>> >> 6 10/1/1998 5:00 0.0 0.00 0.0 NA
> > >>>> >> 7 10/1/1998 6:00 0.0 0.00 0.0 NA
> > >>>> >> 8 10/1/1998 7:00 0.2 0.00 0.0 NA
> > >>>> >>
> > >>>> >> I do not understand why.
> > >>>> >> Something wrong with date?
> > >>>> >>
> > >>>> >> really really thanks,
> > >>>> >> I appreciate a lot all your helps.
> > >>>> >>
> > >>>> >> Diedro
> > >>>> >>
> > >>>> >>
> > >>>> >> Diego
> > >>>> >>
> > >>>> >>
> > >>>> >> On 31 July 2018 at 01:25, MacQueen, Don <macqueen1 using llnl.gov<mailto:macqueen1 using llnl.gov>>
> > >wrote:
> > >>>> >>>
> > >>>> >>> Or, without removing the first line
> > >>>> >>> dadf <- read.table("xxx.txt", stringsAsFactors=FALSE,
> > >>>> >>> skip=1)
> > >>>> >>>
> > >>>> >>> Another alternative,
> > >>>> >>> dadf$datetime <- as.POSIXct(paste(dadf$V1,dadf$V2))
> > >>>> >>> since the dates appear to be in the default format.
> > >>>> >>> (I generally prefer to work with datetimes in POSIXct class
> > >rather
> > >>>> >>> than
> > >>>> >>> POSIXlt class)
> > >>>> >>>
> > >>>> >>> -Don
> > >>>> >>>
> > >>>> >>> --
> > >>>> >>> Don MacQueen
> > >>>> >>> Lawrence Livermore National Laboratory
> > >>>> >>> 7000 East Ave., L-627
> > >>>> >>> Livermore, CA 94550
> > >>>> >>> 925-423-1062
> > >>>> >>> Lab cell 925-724-7509
> > >>>> >>>
> > >>>> >>>
> > >>>> >>>
> > >>>> >>> On 7/30/18, 4:03 PM, "R-help on behalf of Jim Lemon"
> > >>>> >>> <r-help-bounces using r-project.org<mailto:r-help-bounces using r-project.org> on behalf of
> > >drjimlemon using gmail.com<mailto:drjimlemon using gmail.com>>
> > >>>> >>> wrote:
> > >>>> >>>
> > >>>> >>> Hi Diego,
> > >>>> >>> You may have to do some conversion as you have three
> > >>>> >>> fields
> > >in
> > >>>> >>> the
> > >>>> >>> first line using the default space separator and five
> > >fields in
> > >>>> >>> subsequent lines. If the first line doesn't contain any
> > >important
> > >>>> >>> data
> > >>>> >>> you can just delete it or replace it with a meaningful
> > >header
> > >>>> >>> line
> > >>>> >>> with five fields and save the file under another name.
> > >>>> >>>
> > >>>> >>> It looks as thought you have date-time as two fields. If
> > >so, you
> > >>>> >>> can
> > >>>> >>> just read the first field if you only want the date:
> > >>>> >>>
> > >>>> >>> # assume you have removed the first line
> > >>>> >>> dadf<-read.table("xxx.txt",stringsAsFactors=FALSE
> > >>>> >>> dadf$date<-as.Date(dadf$V1,format="%Y-%m-%d")
> > >>>> >>>
> > >>>> >>> If you want the date/time:
> > >>>> >>>
> > >>>> >>>
> > >dadf$datetime<-strptime(paste(dadf$V1,dadf$V2),format="%Y-%m-%d
> > >>>> >>> %H:%M:%S")
> > >>>> >>>
> > >>>> >>> Jim
> > >>>> >>>
> > >>>> >>> On Tue, Jul 31, 2018 at 12:29 AM, Diego Avesani
> > >>>> >>> <diego.avesani using gmail.com<mailto:diego.avesani using gmail.com>> wrote:
> > >>>> >>> > Dear all,
> > >>>> >>> >
> > >>>> >>> > I am dealing with the reading of a *.txt file.
> > >>>> >>> > The txt file the following shape:
> > >>>> >>> >
> > >>>> >>> > 103001930 103001580 103001530
> > >>>> >>> > 1998-10-01 00:00:00 0.6 0 0
> > >>>> >>> > 1998-10-01 01:00:00 0.2 0.2 0.2
> > >>>> >>> > 1998-10-01 02:00:00 0.6 0.2 0.4
> > >>>> >>> > 1998-10-01 03:00:00 0 0 0.6
> > >>>> >>> > 1998-10-01 04:00:00 0 0 0
> > >>>> >>> > 1998-10-01 05:00:00 0 0 0
> > >>>> >>> > 1998-10-01 06:00:00 0 0 0
> > >>>> >>> > 1998-10-01 07:00:00 0.2 0 0
> > >>>> >>> >
> > >>>> >>> > If it is possible I have a coupe of questions, which
> > >>>> >>> will
> > >sound
> > >>>> >>> stupid but
> > >>>> >>> > they are important to me in order to understand ho R
> > >>>> >>> deal
> > >with
> > >>>> >>> file
> > >>>> >>> or date.
> > >>>> >>> >
> > >>>> >>> > 1) Do I have to convert it to a *csv file?
> > >>>> >>> > 2) Can a deal with space and not ","
> > >>>> >>> > 3) How can I read date?
> > >>>> >>> >
> > >>>> >>> > thanks a lot to all of you,
> > >>>> >>> > Thanks
> > >>>> >>> >
> > >>>> >>> >
> > >>>> >>> > Diego
> > >>>> >>> >
> > >>>> >>> > [[alternative HTML version deleted]]
> > >>>> >>> >
> > >>>> >>> > ______________________________________________
> > >>>> >>> > R-help using r-project.org<mailto:R-help using r-project.org> mailing list -- To UNSUBSCRIBE and
> > >more,
> > >>>> >>> see
> > >>>> >>> > 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.
> > >>>> >>>
> > >>>> >>> ______________________________________________
> > >>>> >>> R-help using r-project.org<mailto:R-help using r-project.org> mailing list -- To UNSUBSCRIBE and
> > >more, see
> > >>>> >>> 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.
> > >>>> >>>
> > >>>> >>>
> > >>>> >>
> > >>>> >
> > >>>
> > >>>
> > >>
> > >
> > >______________________________________________
> > >R-help using r-project.org<mailto:R-help using r-project.org> mailing list -- To UNSUBSCRIBE and more, see
> > >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.
> >
> > --
> > Sent from my phone. Please excuse my brevity.
> >
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org<mailto:R-help using r-project.org> mailing list -- To UNSUBSCRIBE and more, see
> 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.
Osobní údaje: Informace o zpracování a ochraně osobních údajů obchodních partnerů PRECHEZA a.s. jsou zveřejněny na: https://www.precheza.cz/zasady-ochrany-osobnich-udaju/ | Information about processing and protection of business partner’s personal data are available on website: https://www.precheza.cz/en/personal-data-protection-principles/
Důvěrnost: Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a podléhají tomuto právně závaznému prohláąení o vyloučení odpovědnosti: https://www.precheza.cz/01-dovetek/ | This email and any documents attached to it may be confidential and are subject to the legally binding disclaimer: https://www.precheza.cz/en/01-disclaimer/
[[alternative HTML version deleted]]
More information about the R-help
mailing list