Создание нового фрейма данных со случайным изменением r

#r #dataframe

Вопрос:

Я хотел бы создать новый фрейм данных из существующего фрейма данных, где каждое значение является случайной величиной. Более конкретно,в новом фрейме данных значение (i, j) является случайной величиной, которая следует нормальному распределению со средним значением (i,j) из существующего фрейма данных и стандартным отклонением 0,1*(i,j).

Ниже я сделал это для одного столбца фрейма данных. Есть ли способ сделать это эффективно для всех столбцов фрейма данных? И сделать так, чтобы новый фрейм данных имел те же имена столбцов, что и существующий фрейм данных?

 #data frame with 10 variables
camrysales <- read_excel("camrysales.xlsx", sheet = "10var", skip = 1)

#randomizing Units Sold column
r.camrysales <- rnorm(nrow(camrysales), mean = camrysales
 #r #dataframe



Вопрос:

Я хотел бы создать новый фрейм данных из существующего фрейма данных, где каждое значение является случайной величиной. Более конкретно,в новом фрейме данных значение (i, j) является случайной величиной, которая следует нормальному распределению со средним значением (i,j) из существующего фрейма данных и стандартным отклонением 0,1*(i,j). Ниже я сделал это для одного столбца фрейма данных. Есть ли способ сделать это эффективно для всех столбцов фрейма данных? И сделать так, чтобы новый фрейм данных имел те же имена столбцов, что и существующий фрейм данных? Units Sold`, sd = 0.1*camrysales #r #dataframe

Вопрос:

Я хотел бы создать новый фрейм данных из существующего фрейма данных, где каждое значение является случайной величиной. Более конкретно,в новом фрейме данных значение (i, j) является случайной величиной, которая следует нормальному распределению со средним значением (i,j) из существующего фрейма данных и стандартным отклонением 0,1*(i,j). Ниже я сделал это для одного столбца фрейма данных. Есть ли способ сделать это эффективно для всех столбцов фрейма данных? И сделать так, чтобы новый фрейм данных имел те же имена столбцов, что и существующий фрейм данных? Units Sold`)

Ответ №1:

Вы можете сделать это с помощью lapply

 r.camrysales <- camrysales
r.camrysales[] <- lapply(camrysales, function(x)  rnorm(nrow(camrysales), mean = x, sd = 0.1*x))
r.camrysales
 

Или использовать across в dplyr

 library(dplyr)
r.camrysales <- camrysales %>% mutate(across(.fns = ~rnorm(n(), ., 0.1 * .)))