楼主: bayes
1809 4

[问答] 扩展数据框的某一列 [推广有奖]

  • 1关注
  • 0粉丝

博士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
1 点
热心指数
0 点
信用等级
0 点
经验
1172 点
帖子
78
精华
0
在线时间
419 小时
注册时间
2005-11-5
最后登录
2021-11-14

楼主
bayes 发表于 2012-11-17 18:53:11 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
编程的时候遇到的一个简单的问题。
比如有数据框如下
     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+观测值,时间消耗很大我所用的程序如下:
  1. s = as.data.frame(strsplit(as.character(test[,2]),';'))
  2. s1 = s[1,]
  3. s2 = s[2,]
  4. res1 = res[,1]
  5. res2 = res[,3:30]
  6. res = data.frame(res1,s1,s2,res2)
复制代码
问题就在最后一句,形不成我想要的数据框。
我试过cbind命令,也不行。
我在想是不是因为s1和s2分离出来的是两行而不是两列的原因呢?
请指教一下怎么解决~



二维码

扫码加我 拉你入群

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

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

关键词:数据框 Character Frame split Fram 程序

你的名字在这看http://xufeiyy.com/detail/?45958.html

沙发
jmpamao 发表于 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 之前解决过 类似的问题
可以请教下他

藤椅
jmpamao 发表于 2012-11-17 21:04:56
..........

板凳
jmpamao 发表于 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

报纸
bayes 发表于 2012-11-19 17:23:13
感谢,可以了。
原来是需要先变矩阵,再变数据框~
你的名字在这看http://xufeiyy.com/detail/?45958.html

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 03:25