首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用readr为相似命名的列定义列规范?

如何使用readr为相似命名的列定义列规范?
EN

Stack Overflow用户
提问于 2018-09-04 21:33:18
回答 1查看 49关注 0票数 1

我有一个有250列的数据库,只想读取其中的50列,而不是加载所有列,然后用dplyr::select删除列。我想我可以使用列规范来做到这一点。我不想手动输入所有这些列的列规范。

我想要保留的50列有一个共同的前缀,比如'blop',所以我设法手动更改了从readr::spec_csv获得的列规范对象。然后我用它来读取我的数据文件:

代码语言:javascript
复制
short_colspec <- readr::spec_csv('myfile.csv')
short_colspec$cols <- lapply(names(short_colspec$cols), function(name){
    if (substr(name, 1, 4) == 'blop'){
        return(col_character())
    } else {
        return(col_skip())
    }
})
short_data <- read_csv('myfile.csv', col_types = short_colspec)

有没有一种方法可以比我做的更健壮地用readr (或任何其他包)函数来指定这样的列规范?

EN

回答 1

Stack Overflow用户

发布于 2018-09-04 22:03:09

使用data.tablefread,您可以选择要跳过(=删除)或保留(= select )的列

代码语言:javascript
复制
#read first line of file to select which columns to keep
#adjust the strsplit-character here ';' according to your csv-type
keep_col <- readLines( "myfile.csv", n = 1L ) %>% strsplit( ";" ) %>% el() %>% grep( "blop", . )
#read file, only the desired columns
fread( "myfile.csv", select = keep_col )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52167567

复制
相关文章

相似问题

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