我想根据一个变量的值(在我的数据库中是n)从原始数据库中乘以记录。我怎样才能在R中做到这一点?
这是我的数据库:
city Val n
1 London 4.0 5
2 Rome 2.5 6
3 Milan 3.0 4
4 Venice 2.0 5这是我想要得到的:
city Val
1 London 4.0
2 London 4.0
3 London 4.0
4 London 4.0
5 London 4.0
6 Rome 2.5
7 Rome 2.5
8 Rome 2.5
9 Rome 2.5
10 Rome 2.5
11 Rome 2.5
12 Milan 3.0
13 Milan 3.0
14 Milan 3.0
15 Milan 3.0
16 Venice 2.0
17 Venice 2.0
18 Venice 2.0
19 Venice 2.0
20 Venice 2.0发布于 2020-08-22 00:06:32
我们可以使用uncount来自tidyr,这基本上是标准的tidyverse方法。
library(tidyr)
uncount(df1, n) %>%
as_tibble()
# A tibble: 20 x 2
# city Val
# <chr> <dbl>
# 1 London 4
# 2 London 4
# 3 London 4
# 4 London 4
# 5 London 4
# 6 Rome 2.5
# 7 Rome 2.5
# 8 Rome 2.5
# 9 Rome 2.5
#10 Rome 2.5
#11 Rome 2.5
#12 Milan 3
#13 Milan 3
#14 Milan 3
#15 Milan 3
#16 Venice 2
#17 Venice 2
#18 Venice 2
#19 Venice 2
#20 Venice 2 或者使用slice
library(dplyr)
df1 %>%
slice(rep(row_number(), n))或者使用base R
df1[rep(seq_len(nrow(df1)), df1$n),1:2]数据
df1 <- structure(list(city = c("London", "Rome", "Milan", "Venice"),
Val = c(4, 2.5, 3, 2), n = c(5L, 6L, 4L, 5L)),
class = "data.frame", row.names = c("1",
"2", "3", "4"))https://stackoverflow.com/questions/63531396
复制相似问题