Skip to content

Calculating column differences

6 messages · Gerrit Eichner, William Michels, Jeff Reichman

#
r-help forum

 

I'm trying to calculate the diff between two rows and them mutate the
difference into a new column. I'm using the diff function but not giving me
what I want. 

 

df <- data.frame(ID=1:5,Score=4*2:6)

 

What a want  where 

  ID Score  diff

1  1     8      8

2  2    12     4

3  3    16     4

4  4    20     4

5  5    24     4

 

What I am getting

  ID Score  diff

1  1     8      NA

2  2    12     4

3  3    16     4

4  4    20     4

5  5    24     4

 

Jeff
#
Dear Jeff,

read diff's help page, and you'll find out
what is wrong with your expectation.

What do think diff(df$Score) should give for
the first element in df$Score??

  Hth  --  Gerrit

---------------------------------------------------------------------
Dr. Gerrit Eichner                   Mathematical Institute, Room 212
gerrit.eichner at math.uni-giessen.de   Justus-Liebig-University Giessen
Tel: +49-(0)641-99-32104          Arndtstr. 2, 35392 Giessen, Germany
http://www.uni-giessen.de/eichner
---------------------------------------------------------------------

Am 24.03.2021 um 17:48 schrieb Jeff Reichman:
#
Dear Jeff,

Rather than diff-ing a linear vector you're trying to diff values from
two different rows. Also you indicate that you want to place the
diff-ed value in the 'lower' row of a new column. Try this (note
insertion of an initial "zero" row):
ID Score diff
1  0     0    0
2  1     8    8
3  2    12    4
4  3    16    4
5  4    20    4
6  5    24    4
HTH, Bill.

W. Michels, Ph.D.
On Wed, Mar 24, 2021 at 9:49 AM Jeff Reichman <reichmanj at sbcglobal.net> wrote:
#
Gerrit

 

Changed my approach ?

 

df <- data.frame(ID=1:5,Score=4*2:6)

 

df %>% 

  mutate(score_diff = Score - lag(Score, default = 0))

 

Jeff

 

-----Original Message-----
From: R-help <r-help-bounces at r-project.org> On Behalf Of Gerrit Eichner
Sent: Wednesday, March 24, 2021 11:53 AM
To: r-help at r-project.org
Subject: Re: [R] Calculating column differences

 

Dear Jeff,

 

read diff's help page, and you'll find out what is wrong with your expectation.

 

What do think diff(df$Score) should give for the first element in df$Score??

 

  Hth  --  Gerrit

 

---------------------------------------------------------------------

Dr. Gerrit Eichner                   Mathematical Institute, Room 212

 <mailto:gerrit.eichner at math.uni-giessen.de> gerrit.eichner at math.uni-giessen.de   Justus-Liebig-University Giessen

Tel: +49-(0)641-99-32104          Arndtstr. 2, 35392 Giessen, Germany

 <http://www.uni-giessen.de/eichner> http://www.uni-giessen.de/eichner

---------------------------------------------------------------------



Am 24.03.2021 um 17:48 schrieb Jeff Reichman:

        

        

            
        

        

            
        

        

            
______________________________________________

 <mailto:R-help at r-project.org> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see  <https://stat.ethz.ch/mailman/listinfo/r-help> https://stat.ethz.ch/mailman/listinfo/r-help

PLEASE do read the posting guide  <http://www.R-project.org/posting-guide.html> http://www.R-project.org/posting-guide.html

and provide commented, minimal, self-contained, reproducible code.
#
More correctly, with an initial "NA" value in the "diff" column:
ID Score diff
1  0     0   NA
2  1     8    8
3  2    12    4
4  3    16    4
5  4    20    4
6  5    24    4
HTH, Bill.
On Wed, Mar 24, 2021 at 10:59 AM William Michels <wjm1 at caa.columbia.edu> wrote:
#
Bill 

I ended up taking a different approach
miDat <- miDat %>% 
  mutate(new_cases = cases - lag(cases, default = 0))

 - or - 

df <- df %>% 
  mutate(diff = Score - lag(Score, default = 0))

Jeff

-----Original Message-----
From: William Michels <wjm1 at caa.columbia.edu> 
Sent: Wednesday, March 24, 2021 1:41 PM
To: r-help at r-project.org
Cc: reichmanj at sbcglobal.net; Gerrit Eichner <gerrit.eichner at math.uni-giessen.de>
Subject: Re: [R] Calculating column differences

More correctly, with an initial "NA" value in the "diff" column:
ID Score diff
1  0     0   NA
2  1     8    8
3  2    12    4
4  3    16    4
5  4    20    4
6  5    24    4
HTH, Bill.
On Wed, Mar 24, 2021 at 10:59 AM William Michels <wjm1 at caa.columbia.edu> wrote: