有如下格式excel数据:

Number           ID                Assignment

1                     A                       AS1

B                       AS2

C                       AS3

2                     A                       AS5

D                       AS2

3                     E                       AS6

...

以Number为1的这个观察值来说,ID:A,B,C在同一个excel单元格里的不同行,同理Assigment:AS1,AS2,AS3也在同一个excel单元格里的不同行。

现想用stata将同一个单元格中不同行的string转入不同观察值,如下格式所示:

Number         ID                   Assignment

1                    A                          AS1

1                    B                          AS2

1                    C                          AS3

2                    A                          AS5

2                    D                          AS2

3                    E                          AS6

...

哪位高手有什么好的解决方法么?

非常感谢!

2013-6-25 00:51:20 上传

我已将voodoo提供的方法评为最佳答案,思路清晰,程序简洁明了。sungmoo提供的方案也很好,但是正如voodoo所说,excel copy+paste到stata产生错行,用Stata编程解决错行,并达成最终目的,这恐怕只有像sungmoo一样具备极高超技能才能解决,一般人不太容易理解。

但是voodoo的方法离完美还差那么一点点,问题就在于第一步excel的预处理,这里还要感谢那么现在的问题就转换为如何用Stata处理导入excel带来的换行问题。Dr Nick Cox编写的charlist(需要ssc install)可以查看variable中包含的ASCII码,但是很遗憾,经我试验,这个命令并不显示“换行”字符。经Statalist上Joseph Coveney的提示,char(10)和 char(13)分别代表line feed和carriage return。于是我用subinstr解决字符替换问题。最后结合voodoo的代码后,我编写完整程序如下:

***import data***

clear

import excel "Example.xlsx", sheet("sheet1") firstrow

***replace line feed with "///"***

gen ids=subinstr(ID,char(10),"///",.)

gen assignments=subinstr(Assignment,char(10),"///",.)

***split each ID and Assignment into different observations***

split ids, gen(ID) parse("///")

split assignments, gen(Assignment) parse("///")

drop ID Assignment ids assignments

***reshape to long data***

reshape long ID Assignment, i(Number) j(num)

drop if ID==""&Assignment==""

针对上述程序,sungmoo又提出了让代码更简洁的修改建议

import excel "Example.xls", sh("sheet1") first clear

split ID, p(`=char(10)')

split Assignment, p(`=char(10)')

drop ID Assignment

reshape long ID Assignment, i(Number)

drop if ID==""

最后感谢所有参与这个帖子讨论的人,真的获益良多。

html拆分单元格多行,拆分一个单元格中多行字符到不同单元格相关推荐

  1. Excel怎样设置标题行,Excel工作表中标题行的处理

    Excel怎样设置标题行,工作表中标题行的处理 Excel做几十.几百行的表格很平常.看下部的数据时看不到表格的标题行,让人搞不清每一列的天文数字究竟代表什么意思.而且正常打印输出时,只有第一页能打印 ...

  2. sql 如何设置行级锁_SQL Server中的行级安全性简介

    sql 如何设置行级锁 In this article, I'm going to discuss Row-Level Security in SQL Server. RLS or Row-Level ...

  3. 国行switch服务器在维护中,国行Switch是否锁区锁服?你关心的问题都将在这里解答...

    国行Nintendo Switch已于今日(12月10日)正式发售,我们已经拿到国行Switch,并对一些备受关注的问题进行了验证,要点如下: • 国行Switch可以玩海外版卡带,海外版游戏也可以正 ...

  4. 函数 —— strtok() 例如:按照字符拆分字符串,放入新定义的数组中;按照字符拆分字符串,放入原先的数组中

    问题描述: 原始数组:char str[80] = "This is - aa bb - cc - dd"; 新定义的数组:     char newstr[80]=  {0}; ...

  5. python 第一行包含一个整数n、表示行数_输入 第一行输入一个整数n(1 = n = 100)表示测试样例个数 接下来n行,一...

    展开全部 #include #include #include #define STRLEN 100 void ifree(char**p,int i); int CheckAndChange(cha ...

  6. css textarea行数_限制textarea中的行数并使用jQuery显示行数

    喵喵时光机 一个非常丑陋但以某种方式起作用的示例指定了textarea行然后在js中   $("textarea").on('keydown keypress keyup',fun ...

  7. php读取文件行读,如何在php中按行读取文件

    您可以使用fgets()函数逐行读取文件: $handle = fopen("inputfile.txt", "r"); if ($handle) { whil ...

  8. java如何枚举定义一个数组_Java中如何将字符枚举类变成一个数组

    ( light. class ); currenummap.put(light. red , " 红灯 " ); currenummap.put(light. green , &q ...

  9. jdbc获取结果行数,如何获取JDBC中的行数?

    I've executed a JDBC query to obtain a resultset. Before iterating over it, I'd like to quickly find ...

  10. 如何在 Excel VBA 中插入行

    在本文中,我将解释如何使用VBA(Visual Basic for Applications)在Excel中插入行.VBA 是一种编程语言,适用于在Excel和其他Office程序中工作的人员,因此可 ...

最新文章

  1. 【linux】Matchbox(一):启动脚本
  2. EJB实体Bean怎样和数据库中表关联?
  3. Access 的top和order by 的问题
  4. Activity生命周期 onCreate onResume onStop onPause
  5. mysql 严格模式查看,如何查找和禁用MySQL严格模式?
  6. java下包内继承时编译不过解决方案
  7. Python hash、xml、configparser、sheve、shutil模块讲解 以及 面向对象初识
  8. 基于javaspringboot+mybatis汽车信息管理系统设计和实现
  9. 【程序员面试宝典】第五章 程序设计基本概念
  10. 【译】Effective TensorFlow Chapter11——在TensorFlow中调试模型
  11. 毕业同学录网站搭建源码分享
  12. 线性系统的状态空间分析和综合
  13. Spss-多元回归案例实操
  14. Word文档调整字间距的方法教程【收藏】
  15. Android Studio 项目运行错误,弹出“Detected ADB对话框”
  16. 基于Java实现的迷宫小游戏
  17. matlab中怎么正弦计算,matlab计算结果中的正弦余弦问题
  18. 目标检测之DarkNet-DarkNet源码解读<一>测试篇
  19. jtable 表头 透明_日本艺术家携手岡本打造了一对“拥薄透明人”!为情侣们定制了一份专属浪漫!这个七夕,一起拥抱爱吧!...
  20. 使用缓冲字符流进行文档排序

热门文章

  1. 项目经理是如何做到每月“0”电话费的
  2. 度用计算机怎么表示什么意思,潘云飞:计算机里讲的耦合度是什么意思?
  3. 使用python计算行列式
  4. Linux 搭建Owncloud 私有云
  5. ROM、PROM、EPROM、EEPROM、FLASH ROM
  6. 顾客点餐系统-----后端代码编写(基于SSM)
  7. Flink 中的木桶效应:单个 subtask 卡死导致整个任务卡死
  8. 响铃:爆雷=靴子落地,P2P或不再负重前行
  9. 模拟实现ps aux | grep xxx
  10. cla作用matlab,共轭亚油酸(CLA)为什么能减脂?90%的健身者都不懂!