全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1765 4
2012-11-17
编程的时候遇到的一个简单的问题。
比如有数据框如下
     v1       v2            v3 .。。
1   a         1;xxx     c
2   b         2;yyy     d

我想把它展开,v1里面的每个变量分为两列观测值,也就是输出成这样:
    v1       v2     v3          v4.。。。
1  a          1      xxx        c
2  b          2      yyy       d

这个文件有4000+观测值,时间消耗很大我所用的程序如下:
复制代码
问题就在最后一句,形不成我想要的数据框。
我试过cbind命令,也不行。
我在想是不是因为s1和s2分离出来的是两行而不是两列的原因呢?
请指教一下怎么解决~



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-11-17 20:36:04
x <- read.table(text="
a 1;xxx c
b 2;yyy d
",stringsAsFactors = F)
V2 <-strsplit(x$V2,split=";")
VV2 <- unlist(V2)
newv2 <- matrix(VV2,ncol=2,byrow=T)
newv2 <- as.data.frame(newv2)
new <- data.frame(x$V1,newv2,x$V3)
names(new) <- paste("V",1:4,sep="")
new

V1 V2  V3 V4
1  a  1 xxx  c
2  b  2 yyy  d

你看看  这样能否行?
qoiqpwqr 之前解决过 类似的问题
可以请教下他
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-17 21:04:56
..........
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-17 21:12:28
你的数据 应该是30列吧

x <- read.table(text="
a 1;xxx c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
b 2;yyy d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
c 3;zzz d 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
d 4;www r 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
",stringsAsFactors = F)
V2 <-strsplit(x$V2,split=";")
VV2 <- unlist(V2)
newv2 <- matrix(VV2,ncol=2,byrow=T) #由向量 变为2列的矩阵
newv2 <- as.data.frame(newv2)
new <- data.frame(x$V1,newv2,x[3:30])
names(new) <- paste("V",1:31,sep="")
new

  V1 V2  V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18
1  a  1 xxx  c  1  1  1  1  1   1   1   1   1   1   1   1   1   1
2  b  2 yyy  d  1  1  1  1  1   1   1   1   1   1   1   1   1   1
3  c  3 zzz  d  1  1  1  1  1   1   1   1   1   1   1   1   1   1
4  d  4 www  r  1  1  1  1  1   1   1   1   1   1   1   1   1   1
  V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31
1   1   1   1   1   1   1   1   1   1   1   1   1   1
2   1   1   1   1   1   1   1   1   1   1   1   1   1
3   1   1   1   1   1   1   1   1   1   1   1   1   1
4   1   1   1   1   1   1   1   1   1   1   1   1   1
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-19 17:23:13
感谢,可以了。
原来是需要先变矩阵,再变数据框~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群