R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Python: poista > ja + merkit R koodista

Tein pienen Python-skriptin, jolla saa > ja + merkit pois esim. tähän blogiin postatuista R-skripteistä (jotka on copy-pastettu RGui:sta).

#!/Python26/
# -*- coding: utf-8 -*-
 
import sys
 
def main(argv):
    if len(argv) < 2:
        sys.stderr.write("Usage: %s <file.txt>" % (argv[0],))
        return 1
 
    f = open(sys.argv[1])
    lines = f.readlines()
    f.close()
 
    for line in lines:
        line = line.strip()
        if not (line[:1] == ">" or line[:1] == "+"):
            continue
        print line[2:]
 
if __name__ == "__main__":
    sys.exit(main(sys.argv))

Toimii esim näin (ajettu Mac OS X Terminalissa):

~ > cat data_excelista_postaus_2.txt 
> #Asetetaan työalue
> setwd("C:/temp/")
> #Tuodaan data
> p <- read.csv2("C:pvmexcel.csv", header=T, na.strings="", strip.white=T)
> #tehdään regexpi, joka tarkastaa päivämäärämuodon dd.mm.yyyy
> md <- "^\\d{1,2}[.]\\d{1,2}[.]\\d{1,4}$"
> p[] <- lapply(p, function(x) { 
+            if (length(grep(md, as.character(x), value=T, perl=T)) > 0) {
+              as.Date(strptime(as.character(x), "%d.%m.%Y"), "%Y-%m-%d")
+            } else {
+              NULL
+            ;x }})
> p
   id        pvm       pvm2
1   1 2009-01-01 2009-11-01
2   2 2009-01-02 2009-11-02
3   3 2009-01-03 2009-11-03
4   4 2009-01-04 2009-11-04
5   5 2009-01-05 2009-11-05
6   6 2009-01-06 2009-11-06
7   7 2009-01-07 2009-11-07
8   8 2009-01-08 2009-11-08
9   9 2009-01-09 2009-11-09
10 10 2009-01-10 2009-11-10
>~ > 
~ > python strip_r-help.py data_excelista_postaus_2.txt 
#Asetetaan työalue
setwd("C:/temp/")
#Tuodaan data
p <- read.csv2("C:pvmexcel.csv", header=T, na.strings="", strip.white=T)
#tehdään regexpi, joka tarkastaa päivämäärämuodon dd.mm.yyyy
md <- "^\\d{1,2}[.]\\d{1,2}[.]\\d{1,4}$"
p[] <- lapply(p, function(x) {
           if (length(grep(md, as.character(x), value=T, perl=T)) > 0) {
             as.Date(strptime(as.character(x), "%d.%m.%Y"), "%Y-%m-%d")
           } else {
             NULL
           ;x }})
p
 
~ >

Kirjoitin skriptin lähinnä omaan käyttöön – sitä voi siis kehittää edelleen, jos on tarve.


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *