0

I am trying to replicate the same column values for the next 2 cells in the column using R.

I have a data-frame of the following form:

Time      World   Cate   Data
1994     Africa     A      12  
1994                B      17
1994                C      22
1994       Asia     A      55
1994                B      10
1994                C      58
1995     Africa     A      62  
1995                B      87
1995                C      12
1995       Asia     A      59
1995                B      12
1995                C      38

and I want to convert it to the following form:

Time      World   Cate   Data
1994     Africa     A      12  
1994     Africa     B      17
1994     Africa     C      22
1994       Asia     A      55
1994       Asia     B      10
1994       Asia     C      58
1995     Africa     A      62  
1995     Africa     B      87
1995     Africa     C      12
1995       Asia     A      59
1995       Asia     B      12
1995       Asia     C      38
Marble
  • 125
  • 1
  • 9

2 Answers2

1

Use fill from the tidyr package:

If your dataframe is called dat, then

dat <- tidyr::fill(dat, World)
George Savva
  • 4,152
  • 1
  • 7
  • 21
1

Using na.locf function from library(zoo)

library(zoo)

na.locf(df)

   Time  World Cate Data
1  1994 Africa    A   12
2  1994 Africa    B   17
3  1994 Africa    C   22
4  1994   Asia    A   55
5  1994   Asia    B   10
6  1994   Asia    C   58
7  1995 Africa    A   62
8  1995 Africa    B   87
9  1995 Africa    C   12
10 1995   Asia    A   59
11 1995   Asia    B   12
12 1995   Asia    C   38

Code

dummy$World <- rep(dummy$World[(1:floor(dim(dummy)[1]/5))*5-4],each = 5)
dummy
Park
  • 14,771
  • 6
  • 10
  • 29