Search code examples
rperlsmoothing

R package for simple kernel smooth?


I have a text file with data like this

4924    0.0000 
4989    0.0287 
4702    0.0574 
4169    0.0861 
3616    0.1148 
3148    0.1435 
2682    0.1722 
2314    0.2010 
2153    0.2297 
2079    0.2584 
2019    0.2871 
2060    0.3158 
2314    0.3445 
2472    0.3732 
2604    0.4019 
2904    0.4306 
3173    0.4593 
3392    0.4880 
3655    0.5167 
3862    0.5455 
4101    0.5742 
4441    0.6029 
4625    0.6316 
4698    0.6603

I would like to perform a kernel smooth on Column 1 (y-axis) before plotting vs Column 2.

The desired smooth is: result = {[1 x prev result + 2x current result + [1 x next result] / 4}

i.e. a standard 1-2-1 smooth in some imaging fields, just purely on a single column/curve.

Can someone suggest if there is an existing R package that I can use to either make my own kernel, or if this simple kernel exists?

My other though was maybe to do in perl (though I am a beginner in perl...) but in R would be more satisfactory I think.


Solution

  • Like this?

    DF <- read.table(text="4924    0.0000 
    4989    0.0287 
    4702    0.0574 
    4169    0.0861 
    3616    0.1148 
    3148    0.1435 
    2682    0.1722 
    2314    0.2010 
    2153    0.2297 
    2079    0.2584 
    2019    0.2871 
    2060    0.3158 
    2314    0.3445 
    2472    0.3732 
    2604    0.4019 
    2904    0.4306 
    3173    0.4593 
    3392    0.4880 
    3655    0.5167 
    3862    0.5455 
    4101    0.5742 
    4441    0.6029 
    4625    0.6316 
    4698    0.6603")
    
    DF[, 3] <- filter(DF[, 1], c(1, 2, 1)/4)
    
    plot(DF[, 2:1])
    lines(DF[, 2:3])
    

    enter image description here