gpt4 book ai didi

R data.table fread select 与部分字符串匹配?

转载 作者:行者123 更新时间:2023-12-02 09:02:38 24 4
gpt4 key购买 nike

我想用 fread仅拉入名称与条件匹配的列。 (在本例中,我想提取包含标签 email 的所有列。)假设您在名为 tempdata.txt 的文件中有此数据。在您的工作目录中:

col1,col2,col3,email1,email2,col4,url1,url2,col5
1,2,3,4,5,6,7,8,9
9,8,7,6,5,4,3,2,1
x,x,x,me@me.com,you@you.com,y,y,y,y
a,a,a,a,a,a,http://google.com,http://stackoverflow.com,a

可以使用 fread如果您知道名称,则加载列的子集:
test <- data.table::fread("tempdata.txt", select=c("email1","email2"))

> test
email1 email2
1: 4 5
2: 6 5
3: me@me.com you@you.com
4: a a

是否也可以使用字符串匹配进行选择?我试图模仿这种行为,但在 fread 内命令:
> all <- data.table::fread("tempdata.txt")
> all %>% select(contains("email"))
email1 email2
1: 4 5
2: 6 5
3: me@me.com you@you.com
4: a a

感谢您的任何见解。

最佳答案

我不知道fread没有这种能力(虽然我没有在文档中看到它)。然而,一种相对便宜的方法是读取第一行或两行,获取列名,grep他们,然后从那里继续前进。

library(data.table)
fwrite(data.table(a=1:2, email1=c('a','b'), snailmail=c('c','d'), email2=c('e','f')), "test.csv")
fread("test.csv", nrows=1)
# a email1 snailmail email2
# 1: 1 a c e
cols <- colnames(fread("test.csv", nrows=0))
cols
# [1] "a" "email1" "snailmail" "email2"
fread("test.csv", select = grep("^email", cols, value = TRUE))
# email1 email2
# 1: a e
# 2: b f

关于R data.table fread select 与部分字符串匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62207214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com