[R] Repeat

David Winsemius dwinsemius at comcast.net
Sun Feb 26 00:43:33 CET 2017


> On Feb 25, 2017, at 10:45 AM, Ashta <sewashm at gmail.com> wrote:
> 
> Thank you David.
> is it not possible to sort it by year and flag so that we can make '-'
> in the second row ?  like this for that particular year.
> 
>   2003 2     Z
>   2003 1      -
> 

I was a bit surprised by the results of htis since I had assumed than an initial NA in a group would remain so, but apparently not:

dat$new <- with(dat, ave(flag, Year, FUN=function(s){ s[s=="-"] <- NA; zoo::na.locf(s) }) )

> dat
   Year month flag new
1  2001     1    Z   Z
2  2001     2    -   Z
3  2001     4    X   X
4  2002     1    Z   Z
5  2002     2    -   Z
6  2003     1    -   Z
7  2003     2    Z   Z
8  2004     2    Z   Z
9  2005     3    Z   Z
10 2005     2    -   Z
11 2005     3    -   Z

David.

> 
> 
> On Sat, Feb 25, 2017 at 12:14 PM, David Winsemius
> <dwinsemius at comcast.net> wrote:
>> 
>>> On Feb 25, 2017, at 8:09 AM, Ashta <sewashm at gmail.com> wrote:
>>> 
>>> I have a data set and I want to repeat a column value based on other
>>> column value,
>>> 
>>> my data look like
>>> 
>>> read.table(text = "Year month flag
>>> 2001 1   Z
>>> 2001 2   -
>>> 2001 4   X
>>> 2002 1   Z
>>> 2002 2   -
>>> 2003 1   -
>>> 2003 2   Z
>>> 2004 2   Z
>>> 2005 3   Z
>>> 2005 2   -
>>> 2005 3   -",  header = TRUE)
>>> 
>>> Within year If  flag = '-'  then i want replace  '-'  by the previous
>>> row value of flag. In this example  for yea  2001 in month 2 flag is
>>> '-' and I want replace it by the previous value of flag (i.e.,  'Z')
>>> 2001 1   Z
>>> 2001 2   Z
>>> 2001 4   X
>>> 
>>> If all values of flag  are '-' within year  then  I wan to set as N
>>> 
>>> The complete out put result will be
>>> 
>>> year month  flag
>>> 2001 1       Z
>>> 2001 2       z
>>> 2001 4       X
>>> 2002 1       Z
>>> 2002 2       Z
>>> 2003 1       Z
>>> 2003 2       Z
>>> 2004 2       Z
>>> 2005 3       Z
>>> 2005 2       N
>>> 2005 3       N
>>> 
>>> Thank you in advance
>>> 
>> 
>> Your example doesn't actually match your verbal description of the algorithm because you have not specified the rule that establishes values for instances where the first value in a year is "-".
>> 
>> The `na.locf` function in the 'zoo' package would be useful for the task describe in your verbal description when used in conjunction with the 'stats'-package's `ave` function.
>> 
>> --
>> David.
>> 
>> 
>>> ______________________________________________
>>> R-help at 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.
>> 
>> David Winsemius
>> Alameda, CA, USA
>> 

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list