通过使用 dplyr
dplyr
df$group=(df$ID-1)%/%3 df%>%group_by(group)%>%dplyr::summarise(ntype=paste0(type,collapse = '')) # A tibble: 9 x 2 group ntype <dbl> <chr> 1 0 huk 2 1 wyb 3 2 nxo 4 3 lyl 5 4 roc 6 5 xgb 7 6 iyx 8 7 sqz 9 8 r
的 1) 强> rollapply 沿输入向量:
rollapply
library(zoo) rollapply(df$type, 3, by = 3, paste, collapse = "", partial = TRUE, align = "left")
赠送:
[1] "huk" "wyb" "nxo" "lyl" "roc" "xgb" "iyx" "sqz" "r"
的 2) 强> 这种替代方案使用 aggregate 没有包裹。
aggregate
n <- nrow(df) aggregate(type ~ gl(n, 3, n), df, paste, collapse = "")[2]
type 1 huk 2 wyb 3 nxo 4 lyl 5 roc 6 xgb 7 iyx 8 sqz 9 r