Question: Dataframe accumulative cell addition into new column
0
gravatar for tiriyon
7 months ago by
tiriyon0
tiriyon0 wrote:

Hey guys, quite new here and to programming in general. I had to make a cummulative column out of another column in my dataframe and I couldn't find help on the mattar. So after I came on a sollution I thought it would be better to post this.

My initial thought was as follows:

```R
   x<- as.numeric(c("", 
                 as.numeric(Tom.VS.Hagai.R1[2,4]), 
                 sum(as.numeric(Tom.VS.Hagai.R1[2:3,4])),
                 sum(as.numeric(Tom.VS.Hagai.R1[2:4,4])),
                 sum(as.numeric(Tom.VS.Hagai.R1[2:5,4])),
                 sum(as.numeric(Tom.VS.Hagai.R1[2:6,4])),
                 sum(as.numeric(Tom.VS.Hagai.R1[2:7,4])),
                 sum(as.numeric(Tom.VS.Hagai.R1[2:8,4]))))

x
Tom.VS.Hagai.R1$Accumulative.Dead<-x
```

After wrapping my head on the matter this is the final product:

```R
> # 2 column 4 row dataframe, first row character second row numeric
> name<- c("Tom", "Hagai", "Yoni", "Aviv")
> apples<- c(1, 2, 3, 4)
> DF<- data.frame(name, apples)
> DF
   name apples
1   Tom      1
2 Hagai      2
3  Yoni      3
4  Aviv      4
> 
> # Looping
> # y is a vector place holder for the "for" loop
> # i is a running index set to run from 1 to the length of the data.frame's column number 2.
> # in the loop, append, appends the sum of 1 to i in column 2 of the data.frame.
> 
> y<-c()
> for( i in 1:length(DF[,2])){
+   y<- append(y, sum(DF[1:i,2]))
+ }
> 
> # Next we load the new vector y as a third column of the datafre:
> DF$accumulative<- y
> DF
   name apples accumulative
1   Tom      1            1
2 Hagai      2            3
3  Yoni      3            6
4  Aviv      4           10
```

Hope it helped someone somewhere, enjoy.

(edited: Spelling mistake in heading)

R • 172 views
ADD COMMENTlink modified 7 months ago • written 7 months ago by tiriyon0
1

did you try cumsum ? @ tiriyon

> name<- c("Tom", "Hagai", "Yoni", "Aviv")
> apples<- c(1, 2, 3, 4)
> DF<- data.frame(name, apples)
> DF$cumsum=cumsum(DF$apples)
> DF
   name apples cumsum
1   Tom      1      1
2 Hagai      2      3
3  Yoni      3      6
4  Aviv      4     10
ADD REPLYlink modified 7 months ago • written 7 months ago by cpad011213k

Hey, that looks much easier, I saw the comment on stackoverflow first so added it as answer; thanks for the help!

ADD REPLYlink written 7 months ago by tiriyon0
1
gravatar for tiriyon
7 months ago by
tiriyon0
tiriyon0 wrote:

Found out that

cumsum(DF$apples)

would have done the job simpler.

Via stackoverflow comment:

[...] what you needed was cumsum(DF$apples). – Ronak Shah

ADD COMMENTlink modified 7 months ago by zx87549.4k • written 7 months ago by tiriyon0
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 967 users visited in the last hour