首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自SPSS代码的固定位置的read.fwf

来自SPSS代码的固定位置的read.fwf
EN

Stack Overflow用户
提问于 2017-02-10 10:52:25
回答 1查看 29关注 0票数 1

我有一个这样的样本数据

代码语言:javascript
复制
00013          326 10 5143 1 1 11 1 73311333111111111111511111111111111111511111111111111111111111111111111111111111111111111111111            3                 3      875421212454542534524542133452421245443454234234544452124445454
00023          325 10 5143 1 1 11 1 74  1333111111111113111111111111111113111111111111111111111111111111111111111111111111111111111                                     864212322454542435434542143342412145443434324235454454542434543

我需要从SPSS代码中通过固定位置读取单个数据,给定列名和数据位置,如下所示(代码片段)

代码语言:javascript
复制
ID 1-4
QUARTER 5
SEX 7
AGEA 8
AGEB 9
RACE 10
OCCA 11
OCCB 12
LOCATION 13
REGION 14
EDUCATION 15
HHIA 16
HHIB 17
PERSONALINCOME 18
ENGLIT 19
CHILIT 20
RUMILIT 21
JAWILIT 22
TAMILLIT 23
MORELIT 24
ILLITERATE 25
MRO1 170
MRO2 171
MRO3 172
MRO4 173
MRO5 174

我已经写好了R代码

代码语言:javascript
复制
data <- read.fwf("MY/Q315-Q216.txt", widths=c(-4,4,1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-144,1,1,1,1), header=FALSE, 
             col.names=c("ID",
                         "QUARTER",
                         "SEX",
                         "AGEA", 
                         "AGEB", 
                         "RACE" ,
                         "OCCA", 
                         "OCCB", 
                         "LOCATION",
                         "REGION", 
                         "EDUCATION",
                         "HHIA", 
                         "HHIB", 
                         "PERSONALINCOME", 
                         "ENGLIT", 
                         "CHILIT", 
                         "RUMILIT", 
                         "JAWILIT", 
                         "TAMILLIT", 
                         "MORELIT", 
                         "ILLITERATE", 
                         "MRO1",
                         "MRO2" ,
                         "MRO3" ,
                         "MRO4" ))

有没有一种更简单的方法,只使用SPSS代码中指示的位置,而不是逐个指定宽度。

EN

回答 1

Stack Overflow用户

发布于 2017-02-10 13:34:34

好的,我是用read_fwf函数找到的

代码语言:javascript
复制
#read data
library(data.table)
library(readr)
mydata1 <- data.table(read_fwf("MY/Q315-Q216.txt", fwf_positions(
   c(5,9,21:39,176:180), 
   c(8,9,21:39,176:180), 
   c("ID",
     "QUARTER",
     "SEX", 
     "AGEA",
     "AGEB",
     "RACE",
     "OCCA",
     "OCCB",
     "LOCATION",
     "REGION",
     "EDUCATION",
     "HHIA",
     "HHIB",
     "PERSONALINCOME",
     "ENGLIT",
     "CHILIT",
     "RUMILIT",
     "JAWILIT",
     "TAMILLIT",
     "MORELIT",
     "ILLITERATE",
     "MRO1",
     "MRO2",
     "MRO3",
     "MRO4",
     "MRO5")))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42150691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档