Развернуть итоговый фрейм данных в r - PullRequest
1 голос
/ 01 апреля 2020
df <- data.frame(
  date = rep("2020-01-01", times = 10),
  letter = LETTERS[1:10],
  values = c(10, 1, 2, 5, 2, 1, 7, 4, 5, 8)
)

Я хотел бы получить развернутый фрейм данных, содержащий одну строку для каждой буквы и каждое значение 1, если оно> 1.

date letter value 2020-01-01 A 1 -,-,- 2020-01-01 J 1

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

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

tidyr::uncount(df, values)

Или, если хотите сохранить столбец values:

tidyr::uncount(df, values, .remove = FALSE)
0 голосов
/ 01 апреля 2020

Вы можете использовать rep в базе R:

expand <- df[rep(1:nrow(df), df$values),]
expand$values <- 1
head(expand)
          date letter values
1   2020-01-01      A      1
1.1 2020-01-01      A      1
1.2 2020-01-01      A      1
1.3 2020-01-01      A      1
1.4 2020-01-01      A      1
1.5 2020-01-01      A      1
...