我想定期拆分字符串。我的问题实际上与此相同:How to split a string into substrings of a given length?,只是我在数据集中有一列字符串,而不是一个字符串。定期拆分字符串
下面是一个例子的数据集:
df = read.table(text = "
my.id X1
010101 1
010102 1
010103 1
010104 1
020101 1
020112 1
021701 0
021802 0
133301 0
133302 0
241114 0
241215 0
", header = TRUE, colClasses=c('character', 'numeric'), stringsAsFactors = FALSE)
下面是所期望的结果。我宁愿删除前导零,如图所示:
desired.result = read.table(text = "
A1 A2 A3 X1
1 1 1 1
1 1 2 1
1 1 3 1
1 1 4 1
2 1 1 1
2 1 12 1
2 17 1 0
2 18 2 0
13 33 1 0
13 33 2 0
24 11 14 0
24 12 15 0
", header = TRUE, colClasses=c('numeric', 'numeric', 'numeric', 'numeric'), stringsAsFactors = FALSE)
这是一个循环似乎接近,也许我可以使用它。不过,我认为可能有更有效的方法。
for(i in 1:nrow(df)) {
print(substring(df$my.id[i], seq(1, 5, 2), seq(2, 6, 2)))
}
这apply
声明不起作用:
apply(df$my.id, 1, function(x) substring(df$my.id[x], seq(1, 5, 2), seq(2, 6, 2)) )
谢谢你的任何建议。我更喜欢在基地R的解决方案。
我建议或许'x < - gsub('([0-9] {2})([0-9] {2})([0-9] {2} )”, '\\ 1 - \\ 2 - \\ 3',DF $ my.id); do.call(rbind,lapply(strsplit(x,' - ),as.numeric))'以避免必须多次写出和执行'regex'。 – mnel 2013-02-19 01:11:59
非常好!我添加了一个击键:strsplit(x,' - ') – 2013-02-19 01:34:37
@mnel谢谢。我更新我的答案。 – agstudy 2013-02-19 14:42:17