在dplyr中重复行并相应地生成一个新列
我有一个数据集,如国家/地区\u未出现\u指数在dplyr中重复行并相应地生成一个新列,r,dplyr,row,repeat,mutate,R,Dplyr,Row,Repeat,Mutate,我有一个数据集,如国家/地区\u未出现\u指数 countries_not_appear_indices <- as.data.frame(c("CUW", "ARM", "VGB", "ATG", "KNA", "GRD", "VCT", "LCA", "TCA", "GNB", "
countries_not_appear_indices <- as.data.frame(c("CUW", "ARM", "VGB", "ATG", "KNA", "GRD", "VCT", "LCA", "TCA", "GNB", "GNQ", "CYM", "MNE", "MDV", "MKD", "GIB", "LIE", "COM", "NCL", "BES", "PYF")) %>%
rename(iso = `c("CUW", "ARM", "VGB", "ATG", "KNA", "GRD", "VCT", "LCA", "TCA", "GNB", "GNQ", "CYM", "MNE", "MDV", "MKD", "GIB", "LIE", "COM", "NCL", "BES", "PYF")`) %>%
mutate(ie = 0, ih = 0)
但是,我还必须以正确的方式生成month函数
有什么线索吗?您可以使用
取消计数
将每行重复12次,并使用行号()创建月份列。
-
库(dplyr)
图书馆(tidyr)
国家/地区\u未\u出现\u指数%>%
未计(12)%>%
分组依据(iso)%>%
mutate(month=行号(),.after='iso')%>%
解组
#国际标准化组织
#
#1 CUW 1 0 0
#2 CUW 2 0 0
#3 CUW 3 0 0
#4 CUW 4 0 0
#5cuw500
#6cuw600
#7 CUW7 0 0
#8 CUW 8 0 0
#9cuw900
#10 CUW 10 0 0 0
#…还有242行
我们可以在基本R
new <- countries_not_appear_indices[rep(seq_len(nrow(countries_not_appear_indices)), 12),]
new$month <- with(new, ave(seq_along(iso), iso, FUN = seq_along))
新建
countries_not_appear_indices[rep(seq_len(nrow(countries_not_appear_indices)), each = 12), ]
library(dplyr)
library(tidyr)
countries_not_appear_indices %>%
uncount(12) %>%
group_by(iso) %>%
mutate(month = row_number(), .after = 'iso') %>%
ungroup
# iso month ie ih
# <chr> <int> <dbl> <dbl>
# 1 CUW 1 0 0
# 2 CUW 2 0 0
# 3 CUW 3 0 0
# 4 CUW 4 0 0
# 5 CUW 5 0 0
# 6 CUW 6 0 0
# 7 CUW 7 0 0
# 8 CUW 8 0 0
# 9 CUW 9 0 0
#10 CUW 10 0 0
# … with 242 more rows
new <- countries_not_appear_indices[rep(seq_len(nrow(countries_not_appear_indices)), 12),]
new$month <- with(new, ave(seq_along(iso), iso, FUN = seq_along))