如何分隔列

How to separate a column

我的数据框的第一列是一个包含两组信息的因子:激活工作的类型 (A1-4) 和执行的月份(大约 50 个 YYMM 格式的观察值)。简化版本可能如下所示:

A = data.frame(type.month=c("A1.1605", "A2.1605", "A1.1604", "A2.1604"), value=sample(1:4))

> A
  type.month value
1    A1.1605     2
2    A2.1605     4
3    A1.1604     1
4    A2.1604     3

我想将 types 放入一列,将 months 放入另一列,我 read 通常这可以通过 reshape2 包完成变量被整齐地分开(例如,前半部分只有 A1,后半部分只有 A2)。但是,我的备用 (A1,A2,A1...) 包含两个信息(类型和月份)。在这种情况下,reshape2 仍然是一个很好的工具吗?还是我应该考虑其他事情?

我的观点是将四种类型的激活工作和月份保存在一个数据框中,这样我就不必将它们存储在四个不同的文件中。

这使用 tidyr 函数分隔字符串 separate:

A = data.frame(type.month=c("A1.1605", "A2.1605", "A1.1604", "A2.1604"), value=sample(1:4))


library(dplyr)
library(tidyr)
A %>% separate(type.month, c('type','month')) %>% arrange(type, desc(month))

给予

type  month      value
A1    1605       4
A1    1604       2
A2    1605       1
A2    1604       3

糟糕,我忘了说正则表达式了。你必须像这样逃离这个时期:

library(stringr)
str_split_fixed(A$type.month, "\.", 2)