在 R 中有条件地复制行

Duplicating rows conditionally in R

我想根据计数复制每个观察结果。例如:

# Sample data
df <- tibble(
x = c("A", "C", "C", "B", "C", "A", "A"),
y = c("Y", "N", "Y", "N", "N", "N", "Y"),
count = c(1, 1, 3, 2, 1, 1, 1)
)

# Target output
df <- tibble(
x = c("A", "C", "C", "C", "C", "B", "B", "C", "A", "A"),
y = c("Y", "N", "Y", "Y", "Y", "N", "N", "N", "N", "Y"),
count = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
)

使用dplyrtidyr

df %>% uncount(count, .remove = F) %>% 
  mutate(count = ifelse(count==3,1, count))

输出为

   x     y     count
   <chr> <chr> <dbl>
 1 A     Y         1
 2 C     N         1
 3 C     Y         1
 4 C     Y         1
 5 C     Y         1
 6 B     N         2
 7 B     N         2
 8 C     N         1
 9 A     N         1
10 A     Y         1