我有一个数据帧:
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)