Воспроизвести строку на основе значения столбца и заполнить эти новые строки другими значениями столбца в r - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть таблица 1, которая содержит числа.Я хотел бы создать строки, количество строк из столбца Всего.Другие значения столбца будут создаваться случайным образом в соответствии со значениями столбца таблицы 1.Например, значение столбца таблицы 2 должно иметь значение 3 «1», а остаток должен быть «0».Кто-нибудь может мне помочь с этим?

Таблица 1

   Year Age Total   column1 column2 column3
    2017    15  10         3       4      2

Желаемая таблица

 Year   Age Total   column1 column2 column3
2017    15  1          1       0      0
2017    15  1          0       1      0
2017    15  1          0       0      1
2017    15  1          0       0      1
2017    15  1          1       0      0
2017    15  1          0       1      0
2017    15  1          1       0      0
2017    15  1          0       1      0
2017    15  1          0       1      0
2017    15  1          0       0      0

1 Ответ

0 голосов
/ 04 декабря 2018

Вместо трех столбцов с взаимоисключающими двоичными записями может быть проще просто преобразовать его из широкого формата в длинный и затем развернуть его:

df<-data.frame(year=2017,age=15,col1=3,col2=4,col3=2)
library(dplyr)
library(tidyr)
df %>%
  gather('key','value',col1:col3) %>%
#   year age  key value
# 1 2017  15 col1     3
# 2 2017  15 col2     4
# 3 2017  15 col3     2  
  filter(value>0) %>%  # Avoid keys with 0 values
  group_by(year,age,key) %>%
  expand(value=1:value)%>%
# year   age key    value
# <dbl> <dbl> <chr>  <int>
#   1  2017    15 col1       1
# 2  2017    15 col1       2
# 3  2017    15 col1       3
# 4  2017    15 col2       1
# 5  2017    15 col2       2
# 6  2017    15 col2       3
# 7  2017    15 col2       4
# 8  2017    15 col3       1
# 9  2017    15 col3       2
ungroup()%>%select(-value)
# # A tibble: 9 x 3
# year   age key  
# <dbl> <dbl> <chr>
#   1  2017    15 col1 
# 2  2017    15 col1 
# 3  2017    15 col1 
# 4  2017    15 col2 
# 5  2017    15 col2 
# 6  2017    15 col2 
# 7  2017    15 col2 
# 8  2017    15 col3 
# 9  2017    15 col3 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...