在 R 中有条件地复制行
Duplicating rows conditionally in R
我想根据计数复制每个观察结果。例如:
- 如果
count == 3
,重复观察 三次 次,但每次将 count 替换为 1。
- 如果
count == 1
,则不需要更改。
# 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)
)
使用dplyr
和tidyr
,
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
我想根据计数复制每个观察结果。例如:
- 如果
count == 3
,重复观察 三次 次,但每次将 count 替换为 1。 - 如果
count == 1
,则不需要更改。
# 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)
)
使用dplyr
和tidyr
,
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