首页 > 解决方案 > 如何仅复制 R 中列的第二个位置的信息以及多个信息

问题描述

在这两种情况下,我有一个这样的文件,但包含更多信息:

Animal  Column.2
1       0000000000000082 Y001003014
2       0000000000000195 TU00000186 REID:n05510451964756
3       0000000000000104 F001002923 F001002923

我的第 2 列有多个信息,但我只想要第二个信息,如下所示:

 Animal  Column.2
    1    Y001003014
    2    TU00000186
    3    F001002923

我试过这段代码:

df$Column.2= gsub("^.{0,17}" & '.{11}$', '', df$Column.2)

但没有用。

标签: rdataframegsub

解决方案


^[^ ]+?取所有元素直到第一个空格,([^ ]+?)\\b取第二个元素直到单词边界\\b,然后.*取其余部分。与\\1您一起粘贴您从中获得的内容([^ ]+?)

(df$Column.2 <- sub("^[^ ]+? ([^ ]+?)\\b.*", "\\1" ,df$Column.2))
#[1] "Y001003014" "TU00000186" "F001002923"

如果格式是固定的,您可以使用:

sub("^.{17}(.{10}).*", "\\1" ,df$Column.2)
#[1] "Y001003014" "TU00000186" "F001002923"

where^.{17}获取前 17 个字符,(.{10})获取流动的 10 个字符并将它们存储在其中\\1.*获取其余字符。


推荐阅读