R 基于列中的数字创建新行

R 基于列中的数字创建新行,r,R,我现在有一张表,里面有一个数量 身份证件 代码 数量 1 A 1 2 B 三 三 C 2 4 D 1 已更新 现在,我们已将分离、折叠的值存储到一个新列中: library(dplyr) library(tidyr) df %>% group_by(ID) %>% uncount(Quantity, .remove = FALSE) %>% mutate(NewQ = 1) # A tibble: 7 x 4 # Groups: ID [4] ID

我现在有一张表,里面有一个数量

身份证件 代码 数量 1 A 1 2 B 三 三 C 2 4 D 1 已更新 现在,我们已将分离、折叠的值存储到一个新列中:

library(dplyr)
library(tidyr)

df %>%
  group_by(ID) %>%
  uncount(Quantity, .remove = FALSE) %>%
  mutate(NewQ = 1)

# A tibble: 7 x 4
# Groups:   ID [4]
     ID Code  Quantity  NewQ
  <int> <chr>    <int> <dbl>
1     1 A            1     1
2     2 B            3     1
3     2 B            3     1
4     2 B            3     1
5     3 C            2     1
6     3 C            2     1
7     4 D            1     1

我们可以使用
slice

library(dplyr)
df %>% 
  group_by(ID) %>% 
  slice(rep(1:n(), each = Quantity)) %>% 
  mutate(Quantity= rep(1))
输出:

     ID Code  Quantity
  <dbl> <chr>    <dbl>
1     1 A            1
2     2 B            1
3     2 B            1
4     2 B            1
5     3 C            1
6     3 C            1
7     4 D            1
ID代码数量
1 A 1
2 B 1
3 2 B 1
4 2 B 1
5 3 C 1
6 3 C 1
7 4 D 1

使用
rep的基本R选项

transform(
  `row.names<-`(df[rep(1:nrow(df), df$Quantity), ], NULL),
  Quantity = 1
)

谢谢您!!!它非常有效。除了替换原来的Quantity变量,您知道我如何用break-out添加一个新变量吗?我正试图保留原来的一个,以便可视化…@LauraCuesta,我的荣幸。是的,当然,我只是修改了这两种解决方案,这样我们就有了一个新的列,用于分隔折叠的值。
transform(
  `row.names<-`(df[rep(1:nrow(df), df$Quantity), ], NULL),
  Quantity = 1
)
  ID Code Quantity
1  1    A        1
2  2    B        1
3  2    B        1
4  2    B        1
5  3    C        1
6  3    C        1
7  4    D        1