r-如何在数据帧中将一列中的数字按一定长度拆分为两列



我有一个数据帧:

df <- data.frame(year = c(200501:200512))

我想在第4个数字处将列一分为二,这样我的数据帧看起来像这样:

df_split <- data.frame(year = rep(c(2005)), month = c(01:12)). 

这与其说是关于数据帧的问题,不如说是关于R中的向量的问题。如果你的实际问题包含更多细微差别,那么更新你的问题或发布一个新问题。

如果你的向量year是数字的(按照要求(,你可以做简单的数学运算:

year0 <- 200501:200512
year <- as.integer(year0 / 100) # examine the result of `year0 / 100` to see why I use `as.integer` at all and not `round`.
month <- year0 - year

编辑:正如nicola所指出的,我们可以用其他方法计算它,得到完全相同的结果:

year <- year0 %/% 100
month <- year0 %% 100

或者,tidyr版本可能更紧凑

library(tidyr)
df %>% separate(year, into = c("yr", "mth"), sep = 4, convert = TRUE)

最新更新