如何分隔列
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)
我的数据框的第一列是一个包含两组信息的因子:激活工作的类型 (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)