Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Change First Value for Each Group in Data Table Object in R



To change the first value for each group in data.table object, we can use single square brackets for accessing and changing the value to desired value. For example, if we have a data.table object called DT that contains a group column defined by Class and a numerical column defined by Response then the first value of Response for each Class can be set to say 5 by using the command DT[,Response:=c(2,Response[-]),by=Class]

Consider the below data.table object −

Example

library(data.table)
Group<-sample(c("A","B","C"),20,replace=TRUE)
DT1<-data.table(Group,y)
DT1

Output

   Group y
1:  B   5
2:  A   7
3:  A   4
4:  B   3
5:  B   5
6:  C   7
7:  C   5
8:  A   4
9:  C   6
10: A   5
11: B   6
12: C   5
13: A   9
14: A   4
15: B   5
16: C   3
17: C   3
18: B   8
19: A   7
20: C   2

Changing first value of y for each Group in DT1 to 2 −

Example

DT1[,y:=c(2,y[-1]),by=Group]
DT1

Output

   Group y
1:  B    2
2:  A    2
3:  A    4
4:  B    3
5:  B    5
6:  C    2
7:  C    5
8:  A    4
9:  C    6
10: A    5
11: B    6
12: C    5
13: A    9
14: A    4
15: B    5
16: C    3
17: C    3
18: B    8
19: A    7
20: C    2

Example

Class<-sample(c("First","Second","Third","Fourth"),20,replace=TRUE)
x<-rpois(20,1)
DT2<-data.table(Class,x)
DT2

Output

    Class   x
1: Fourth   1
2: Second   2
3: Second   0
4: Third    0
5: Second   0
6: First    1
7: Third    2
8: First    1
9: Third    0
10: Fourth  3
11: Fourth  0
12: Second  0
13: Third   2
14: Fourth  3
15: Fourth  0
16: Fourth  3
17: Second  0
18: Fourth  1
19: First   0
20: Second  2

Changing first value of x for each Class in DT2 to 3 −

Example

DT2[,x:=c(3,x[-1]),by=Class]
DT2

Output

     Class    x
1:  Fourth    3
2:  Second    3
3:  Second    0
4:  Third     3
5:  Second    0
6:  First     3
7:  Third     2
8:  First     1
9:  Third     0
10: Fourth    3
11: Fourth    0
12: Second    0
13: Third     2
14: Fourth    3
15: Fourth    0
16: Fourth    3
17: Second    0
18: Fourth    1
19: First     0
20: Second    2
Updated on: 2021-02-08T06:29:14+05:30

665 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements