在最后一个字符之前分割字符串

马克·米勒

我有一个数字变量,DATE它表示最后两个字符为MONTH,第一个或两个字符为的日期DAY我想将该列拆分为MONTH的单独列DAY

我可以使用以下R代码来做到这一点尽管我希望有一个更简单的regex解决方案。

my.data <- read.table(text = '
     ID     DATE     VARX
    A111     104        0
    A111     204        1
    A111    1004        4
    A111    2004        4
    B111    3004        2
    C111    3004        3
    C111     105        4
    C111    1005        4
', header = TRUE, stringsAsFactors = FALSE)

# remove the last two characters of a string
my.data$DAY   <- ifelse(nchar(my.data$DATE) == 3,
                        substr(my.data$DATE, nchar(my.data$DATE) - (nchar(my.data$DATE)-1), nchar(my.data$DATE) - (nchar(my.data$DATE)-1)),
                        substr(my.data$DATE, nchar(my.data$DATE) - (nchar(my.data$DATE)-1), nchar(my.data$DATE) - (nchar(my.data$DATE)-2)))

# keep the last two characters of a string

my.data$MONTH <- substr(my.data$DATE, (nchar(my.data$DATE)-1), nchar(my.data$DATE))

    ID DATE VARX DAY MONTH
1 A111  104    0   1    04
2 A111  204    1   2    04
3 A111 1004    4  10    04
4 A111 2004    4  20    04
5 B111 3004    2  30    04
6 C111 3004    3  30    04
7 C111  105    4   1    05
8 C111 1005    4  10    05

感谢您的任何建议。

安德烈

要使用正则表达式,您可以尝试:

dat <- c(104, 204, 1004, 2004, 3004, 3004, 105, 1005)


day <- gsub("(.*?)(..)", "\\1", dat)
day

[1] "1"  "2"  "10" "20" "30" "30" "1"  "10"

mth <- gsub("(.*?)(..)", "\\2", dat)
mth

[1] "04" "04" "04" "04" "04" "04" "05" "05"

您也可以尝试的组合sprintfsubstr

在这里,我将它们包装到一个给出答案的函数中:

foo <- function(x){
  dat <- sprintf("%04d", x)
  cbind(day=substr(dat, 1, 2), month=substr(dat, 3, 4))
}

foo(dat)

foo(dat)
     day  month
[1,] "01" "04" 
[2,] "02" "04" 
[3,] "10" "04" 
[4,] "20" "04" 
[5,] "30" "04" 
[6,] "30" "04" 
[7,] "01" "05" 
[8,] "10" "05" 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从之前被 char 分割的字符串中剪切最后一个字符

来自分类Dev

如何检索特定字符串之前的最后一个字符数组

来自分类Dev

分割带限制的字符串,其中最后一个字符串包含余数

来自分类Dev

每5个字符分割一个字符串

来自分类Dev

C ++每X个字符分割一个字符串

来自分类Dev

RegEx在最后一个分号之前找到一个字符串

来自分类Dev

仅显示最后一个字符串的字符串数组

来自分类Dev

删除最后一个字符串字符串

来自分类Dev

仅显示最后一个字符串的字符串数组

来自分类Dev

golang在字符串之前添加一个字符串... interface {}

来自分类Dev

PHP从字符串的最后一个字符中删除特殊字符

来自分类Dev

如果下一个字符是特定字符,则分割字符串

来自分类Dev

删除字符串Livecode语言中的最后一个字符

来自分类Dev

如何检查bash字符串中的最后一个字符?

来自分类Dev

删除字符串的最后一个字符c#

来自分类Dev

如何在TSQL中匹配字符串的最后一个字符?

来自分类Dev

用纯CSS隐藏字符串中的最后一个字符

来自分类Dev

选择字符串的最后一个字符,直到Python中的空格

来自分类Dev

比较字符串的最后一个字符

来自分类Dev

在Prolog中获取字符串的最后一个字符

来自分类Dev

从文件中扫描字符串而忽略最后一个字符

来自分类Dev

获取字符串中的最后一个字符

来自分类Dev

弹出字符串中的最后一个字符

来自分类Dev

泰米尔语unicode字符串的最后一个字符

来自分类Dev

TextWatcher-替换字符串的最后一个字符

来自分类Dev

使用`format`获取字符串的最后一个字符

来自分类Dev

Python3-字符串的最后一个字符

来自分类Dev

从SQL Plus中的字符串中删除最后一个字符

来自分类Dev

获取JavaScript字符串中的最后一个字符,忽略空格

Related 相关文章

  1. 1

    从之前被 char 分割的字符串中剪切最后一个字符

  2. 2

    如何检索特定字符串之前的最后一个字符数组

  3. 3

    分割带限制的字符串,其中最后一个字符串包含余数

  4. 4

    每5个字符分割一个字符串

  5. 5

    C ++每X个字符分割一个字符串

  6. 6

    RegEx在最后一个分号之前找到一个字符串

  7. 7

    仅显示最后一个字符串的字符串数组

  8. 8

    删除最后一个字符串字符串

  9. 9

    仅显示最后一个字符串的字符串数组

  10. 10

    golang在字符串之前添加一个字符串... interface {}

  11. 11

    PHP从字符串的最后一个字符中删除特殊字符

  12. 12

    如果下一个字符是特定字符,则分割字符串

  13. 13

    删除字符串Livecode语言中的最后一个字符

  14. 14

    如何检查bash字符串中的最后一个字符?

  15. 15

    删除字符串的最后一个字符c#

  16. 16

    如何在TSQL中匹配字符串的最后一个字符?

  17. 17

    用纯CSS隐藏字符串中的最后一个字符

  18. 18

    选择字符串的最后一个字符,直到Python中的空格

  19. 19

    比较字符串的最后一个字符

  20. 20

    在Prolog中获取字符串的最后一个字符

  21. 21

    从文件中扫描字符串而忽略最后一个字符

  22. 22

    获取字符串中的最后一个字符

  23. 23

    弹出字符串中的最后一个字符

  24. 24

    泰米尔语unicode字符串的最后一个字符

  25. 25

    TextWatcher-替换字符串的最后一个字符

  26. 26

    使用`format`获取字符串的最后一个字符

  27. 27

    Python3-字符串的最后一个字符

  28. 28

    从SQL Plus中的字符串中删除最后一个字符

  29. 29

    获取JavaScript字符串中的最后一个字符,忽略空格

热门标签

归档