How to populate new variable with repeated values from vector?

r create vector repeated value
how to repeat a sequence in r
r repeat vector to matrix
r rep function
create a sequence of even numbers between 1 to 10 repeating twice. in r
r duplicate elements in vector
array of repeated values r
repeat a vector

I have a vector of values:

    values = c(22, 42, 243)

I have a variable in a dataframe:

    df$variable = 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3

How do I repeat each value in the values vector n times in a new variable in my dataframe such that I get the following:

    df$new_variable = 22, 22, 22, 22, 42, 42, 42, 42, 243, 243, 243, 243

The simplest way is to use sapply:

sapply(variable, function(x) df$values[x])

Hm... There is even a simpler solution:

values[df$variable]

Create sequence of repeated values, in sequence?, You missed the each= argument to rep() : R> n <- 3 R> rep(1:5, each=n) [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 R>. so your example can be done with� To repeat the vector c(0, 0, 7) three times, use this code: > rep(c(0, 0, 7), times = 3) [1] 0 0 7 0 0 7 0 0 7. You also can repeat every value by specifying the argument each, like this: > rep(c(2, 4, 2), each = 3) [1] 2 2 2 4 4 4 2 2 2. R has a little trick up its sleeve. You can tell R for each value how often it has to be repeated.

You could use rle and inverse.rle

r <- rle(variable)

r is an object of class "rle"

r
#Run Length Encoding
#  lengths: int [1:3] 4 4 4
#  values : num [1:3] 1 2 3

Replace its values slot with your values and call inverse.rle to get desired output

r$values <- values
inverse.rle(r)
# [1]  22  22  22  22  42  42  42  42 243 243 243 243

data

values = c(22, 42, 243)
variable = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)

How to Repeat Vectors in R, In R, you can combine a vector with itself if you want to repeat it, but if you want to repeat the values in a vector many times, using the c() function becomes a bit� The second column would be used for data that are sorted by week. Create ID vectors in SAS/IML software. One way to create ID vectors in SAS/IML software is to use the REPEAT function. The REPEAT function creates a matrix from an input vector by repeating the vector a specified number of times horizontally and vertically.

If variable is not meant to be the index elements of values, then we could do

rep(values, tapply(variable, variable, length))
# [1]  22  22  22  22  42  42  42  42 243 243 243 243

Or, with rle()

rep(values, rle(variable)$lengths)
# [1]  22  22  22  22  42  42  42  42 243 243 243 243

Replicate Elements of Vectors and Lists, an integer-valued vector giving the (non-negative) number of times to repeat each element if of length length(x) , or to repeat the whole vector if of length 1. Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. creating a vector that repeats a number 360 times. Learn more about vector, repeating

Repeat copies of array elements - MATLAB repelem, If n is a scalar, then each element of v is repeated n times. The length Create a vector and repeat each of its elements three times into a new vector. v = [1 2 3� Now lets discuss different ways to add new columns to this data frame in pandas. Add column to dataframe in pandas using [] operator Pandas: Add new column to Dataframe with Values in list. Suppose we want to add a new column ‘Marks’ with default values from a list. Let’s see how to do this,

Repeat copies of array - MATLAB repmat, This MATLAB function returns an array containing n copies of A in the row and column Create a 3-by-2 matrix whose elements contain the value 10. repmat repeats the entries of the table and appends a number to the new variable names . 4) Initialize a vector by specifying size and elements Algorithm Begin Initialize a variable s. Create a vector v with size s and all values with 7. Initialize vector v1 by array. Initialize vector v2 by v1. Print the elements. End. Example. Live Demo

rep: Replicate Elements of Vectors and Lists, A vector giving the number of times to repeat each element if of length length(x) , or to repeat the whole vector if of length 1. length.out: non-negative integer. The� I don't do time-series analysis, but your data has an id variable which means that the time variable, week, is repeated by id. Correct? The command var however appears to expect only a single time-series.

Comments
  • What if df$variable would be df$variable + 5 ? Doesn't seem to be a problem for OP though.
  • Glad you added values[variable]
  • Awesome, great solution! I appreciate the simplicity. Thank you.
  • @markus in that case do values[as.integer(factor(df$variable))]
  • Of course, that case comes with the assumption that OP intends to match variable to value positionally based just on the order of occurrence... seems like a very odd case. If df$variable was instead df$variable + 5 I would probably suggest that there is some earlier problem/bug that needs fixing.