Изменение чисел в строке r - PullRequest
0 голосов
/ 21 марта 2019

У меня огромный фрейм данных. Тем не менее, у меня есть похожие идентификаторы, и это были разные наблюдения. То, что я пытаюсь сделать, это изменить последние / последние две цифры в столбце ID. Так что для идентификатора alnfru_00001 в строке 5 должно быть alnfru_00006 и так далее. эта последовательность видна во всем фрейме данных даже с другими идентификаторами. Кто-нибудь может оказать некоторую помощь?

                ID          PFT        area
        1    alnfru_00001 alnfru Yukon_Delta
        2    alnfru_00002 alnfru Yukon_Delta
        3    alnfru_00003 alnfru Yukon_Delta
        4    alnfru_00004 alnfru Yukon_Delta
        5    alnfru_00001 alnfru Yukon_Delta
        6    alnfru_00002 alnfru Yukon_Delta
        7    alnfru_00003 alnfru Yukon_Delta
        8    alnfru_00004 alnfru Yukon_Delta
        9    alnfru_00005 alnfru Yukon_Delta....................................

        18   alnfru_00001 alnfru Yukon_Delta
        19   alnfru_00002 alnfru Yukon_Delta
        20   alnfru_00003 alnfru Yukon_Delta
        21   alnfru_00004 alnfru Yukon_Delta
        22   alnfru_00001 alnfru Yukon_Delta
        23   alnfru_00002 alnfru Yukon_Delta
        24   alnfru_00003 alnfru Yukon_Delta
        25   alnfru_00004 alnfru Yukon_Delta

The data frame should look like this 


            ID          PFT        area
    1    alnfru_00001 alnfru Yukon_Delta
    2    alnfru_00002 alnfru Yukon_Delta
    3    alnfru_00003 alnfru Yukon_Delta
    4    alnfru_00004 alnfru Yukon_Delta
    5    alnfru_00005 alnfru Yukon_Delta
    6    alnfru_00006 alnfru Yukon_Delta
    7    alnfru_00007 alnfru Yukon_Delta
    8    alnfru_00008 alnfru Yukon_Delta
    9    alnfru_00009 alnfru Yukon_Delta....................................

    18   alnfru_00010 alnfru Yukon_Delta
    19   alnfru_00011 alnfru Yukon_Delta
    20   alnfru_00012 alnfru Yukon_Delta
    21   alnfru_00013 alnfru Yukon_Delta
    22   alnfru_00014 alnfru Yukon_Delta
    23   alnfru_00015 alnfru Yukon_Delta
    24   alnfru_00016 alnfru Yukon_Delta
    25   alnfru_00017 alnfru Yukon_Delta

1 Ответ

0 голосов
/ 21 марта 2019

Если вы хотите, чтобы конечный номер отслеживал номер строки (немного непонятно из вопроса), вы можете сделать это так:

dat <- data.frame(PFT = rep("alnfru", 10000))
head(dat)
#>      PFT
#> 1 alnfru
#> 2 alnfru
#> 3 alnfru
#> 4 alnfru
#> 5 alnfru
#> 6 alnfru

С учетом кодировки столбца, что идентификатор приводит к решению:

dat$ID <- paste(dat$PFT, sprintf("%05d", 1:nrow(dat)), sep = "_")
dat[c(1:3, 9997:10000),]
#>          PFT           ID
#> 1     alnfru alnfru_00001
#> 2     alnfru alnfru_00002
#> 3     alnfru alnfru_00003
#> 9997  alnfru alnfru_09997
#> 9998  alnfru alnfru_09998
#> 9999  alnfru alnfru_09999
#> 10000 alnfru alnfru_10000

Если на самом деле все идентификаторы начинаются с одного и того же начального кода, вы можете просто сделать:

dat$ID <- paste("alnfru", sprintf("%05d", 1:nrow(dat)), sep = "_")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...