R 基于列中的数字创建新行
我现在有一张表,里面有一个数量 身份证件 代码 数量 1 A 1 2 B 三 三 C 2 4 D 1 已更新 现在,我们已将分离、折叠的值存储到一个新列中: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
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