如何分隔列

时间:2016-10-14 18:38:01

标签: r dplyr reshape2

我的数据框的第一列是一个包含两组信息的因素:激活的类型(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在这种情况下仍然是一个好工具,还是我应该考虑别的什么?

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

2 个答案:

答案 0 :(得分:2)

这使用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

答案 1 :(得分:0)

Drat,我忘了提到正则表达式。你必须像这样摆脱这段时间:

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