【问题标题】:How to keep only the last X characters from all rows in a dataframe column [duplicate]如何仅保留数据框列中所有行的最后 X 个字符[重复]
【发布时间】:2019-12-21 02:37:39
【问题描述】:

我有一个数据框列,我想只保留每行的最后 X 个字符(在我的情况下为 7)。该字符串的格式为 xxxxxxx_xxxxxxx,其中前 7 个字符和后 7 个字符不同。

x <- data.frame("Var" = c("1970820_1970821", "1623789_1623777", "4862221_4862011", "4764567_4767067"))

我想复制:

data.frame("Var" = c("1970821", "1623777", "4862011", "4767067"))

【问题讨论】:

    标签: r


    【解决方案1】:

    如果需要提取固定数量的字符,我们可以使用substr

    x$Var <- substring(x$Var, nchar(as.character(x$Var)) - 6)
    x$Var
    #[1] "1970821" "1623777" "4862011" "4767067"
    

    strsplit

    x$Var <- sapply(strsplit(as.character(x$Var), "_", fixed = TRUE), `[`, 2)
    

    或者read.table的另一个选项

    x$Var <- read.table(text = as.character(x$Var), sep="_", header = FALSE)[,2]
    

    或删除不超过_ 的字符并且位数可变

    x$Var <- sub(".*_", "", x$Var)
    

    或者另一个选项是word

    library(stringr)
    x$Var <- word(x$Var, 2, sep= "_")
    

    或者另一个选项是str_remove

    library(dplyr)
    x %>%
       mutate(Var = str_remove(Var, ".*_"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多