【问题标题】:Paste multiple elements of a list of vectors粘贴向量列表的多个元素
【发布时间】:2015-06-03 14:14:01
【问题描述】:

我有一个这样的数据表

        ID           Name
1: 2760925   01_HOOFD_010
2: 2760925   01_HOOFD_015
3: 2771451   01_HOOFD_010
4: 2771451 01_HOOFD_190_2
5: 2771451 01_HOOFD_030_2
6: 2771451 08_AWB45_020_2
7: 2771451   08_AWB45_040
8: 2771451 01_HOOFD_065_2

对于“名称”字段,我希望将第二个下划线之后的部分放在单独的 data.table 列中。 目前,我使用带有“_”作为标记的 strplit,但我的问题是一些记录有 3 个元素,而另一些记录有 4 个。 我目前的解决方案是

DT$code_3<-DT[,.(lapply(strsplit(Name,"_"),"[",3:4)),][,.(lapply(V1,function(x) paste(na.omit(x),collapse="_"))),]

但我怀疑这是否是最真实/最简洁的方式...... 你有更好的想法吗? 谢谢

> dput(DT)
structure(list(ID = c(2760925L, 2760925L, 2771451L, 2771451L, 
2771451L, 2771451L, 2771451L, 2771451L), Name = c("01_HOOFD_010", 
"01_HOOFD_015", "01_HOOFD_010", "01_HOOFD_190_2", "01_HOOFD_030_2", 
"08_AWB45_020_2", "08_AWB45_040", "01_HOOFD_065_2")), .Names = c("ID", 
"Name"), row.names = c(NA, -8L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x103819178>)

【问题讨论】:

    标签: r list data.table paste


    【解决方案1】:
    x <-structure(list(ID = c(2760925L, 2760925L, 2771451L, 2771451L, 
    2771451L, 2771451L, 2771451L, 2771451L), Name = c("01_HOOFD_010", 
    "01_HOOFD_015", "01_HOOFD_010", "01_HOOFD_190_2", "01_HOOFD_030_2", 
    "08_AWB45_020_2", "08_AWB45_040", "01_HOOFD_065_2")), .Names = c("ID", 
    "Name"), row.names = c(NA, -8L), class = c("data.table", "data.frame"
    ))
    
    x$two <- gsub( "(.*?)_(.*?)_(.*?)" , "" , x$Name )
    

    【讨论】:

    • 另一个版本是 sub('([^_]+_){2}', '', x$Name)data.table 语法将是 x[, two:= sub('([^_]+_){2}', '', Name)]
    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 2018-03-10
    • 1970-01-01
    • 2023-01-20
    相关资源
    最近更新 更多