R语言数据处理(二)字符分隔
来源:互联网 发布:手机信号屏蔽器软件 编辑:程序博客网 时间:2024/06/06 08:28
现有match表,
v1 v2
1 001;02
2 03,004;001
3 003;002,001
我想把match表中V2这一列的数据分隔开,形成表match_new:
V1 V2 V3 V4
1 001 02
2 03 004 001
3 003 002 001
需要注意的是原match表中v2这一列里的数据有的以“;”分隔,有的以“,”分隔。
代码一 a <- data.frame(v1 = 1:3, V2 = c('001;02', '03,004;001', '003;002,001'), V3 = NA, V4 = NA, stringsAsFactors = F )
for(i in 1:nrow(a)){
l <- strsplit(a[i, 2], ',')
l <- strsplit(l[[1]], ';')
s <- l[[1]]
if(length(l)>1)
for(n in 2:length(l)){
s <- c(s, l[[n]])
}
a[i,2:(1+length(s))] <- s
}
代码二> match<-data.frame(V1=c(1,2,3),v2=c('001;002','003,004;001','003;002,001'))> match V1 v21 1 001;0022 2 003,004;0013 3 003;002,001> > parts<-function(x) {+ m <- regexec("([0-9]+)(;|,)*([0-9]*)(;|,)*([0-9]*)", x)+ parts <- unlist(lapply(regmatches(x, m), `[`, c(2L, 4L, 6L)))+ parts+ }> > rr<-do.call(rbind,lapply(as.character(match$v2),parts))> colnames(rr)<-c("V2","V3","V4")> cbind(V1=match$V1,rr) V1 V2 V3 V4 [1,] "1" "001" "002" "" [2,] "2" "003" "004" "001"[3,] "3" "003" "002" "001"
0 0
- R语言数据处理(二)字符分隔
- R语言数据处理(一)
- r语言数据处理(三)
- R语言日期数据处理
- R 语言-数据处理基础
- R语言-数据处理
- R语言数据处理详解
- R语言-数据处理包 dplyr
- R语言-数据处理包 dplyr
- R语言数据处理(1)
- R语言数据处理(2)
- 【R语言 数据处理】R做数据处理中的小技巧
- 【R语言 数据处理】R语言数据变形melt用法
- R语言___数据处理1向量
- R语言__数据处理2列表
- R语言数据处理篇之高级循环
- R语言的微博数据处理
- R语言微博数据处理(2)
- 141.Oracle数据库SQL开发之 集合——使用映射方法比较嵌套表的内容
- Android开发笔记(十一)自定义视图的构造方法
- cakephp开发记录(一)
- dot(.) is a synonym of `source`
- 142.Oracle数据库SQL开发之 集合——使用CAST转换类型
- R语言数据处理(二)字符分隔
- 21_Java 异常处理
- Redhat 安装&配置 MySQL
- UML总结(对九种图的认识和如何使用Rational Rose 画图)
- 143.Oracle数据库SQL开发之 集合——在PLSQL中使用集合
- linux:/etc/default/useradd 和 /etc/login.defs
- C语言实现动态数组
- 144.Oracle数据库SQL开发之 集合——多级集合类型
- 两次按返回键实现程序的退出