Изменить порядковый номер кадра данных - PullRequest
33 голосов
/ 27 сентября 2011

После того, как я закончил с некоторыми манипуляциями в Dataframe, я получил результирующий dataframe.Но индекс не указан должным образом, как показано ниже.

                    MsgType/Cxr NoOfMsgs AvgElpsdTime(ms)
    161                   AM       86            30.13
    171                   CM        1              104
    18                    CO       27          1244.81
    19                    US       23          1369.61
    20                    VK        2              245
    21                    VS       11          1273.82
    112                  fqa       78          1752.22
    24                    SN       78          1752.22

Я хотел бы получить результат, как показано ниже.

                    MsgType/Cxr NoOfMsgs AvgElpsdTime(ms)
    1                   AM        86            30.13
    2                   CM         1              104
    3                    CO       27          1244.81
    4                    US       23          1369.61
    5                    VK        2              245
    6                    VS       11          1273.82
    7                   fqa       78          1752.22
    8                    SN       78          1752.22

Пожалуйста, укажите, как я могу получить это?

Ответы [ 3 ]

46 голосов
/ 27 сентября 2011

Это rownames вашего фрейма данных, который по умолчанию равен 1:nrow(dfr). Когда вы переупорядочиваете фрейм данных, исходные имена строк также переупорядочиваются. Чтобы последовательно отображать строки нового порядка, просто используйте:

rownames(dfr) <- 1:nrow(dfr)
30 голосов
/ 27 сентября 2011

Или просто

rownames(df) <- NULL

дает то, что вы хотите.

> d <- data.frame(x = LETTERS[1:5], y = letters[1:5])[sample(5, 5), ]
> d
  x y
5 E e
4 D d
3 C c
2 B b
1 A a
> rownames(d) <- NULL
> d
  x y
1 E e
2 D d
3 C c
4 B b
5 A a
3 голосов
/ 27 сентября 2011

Индекс - это фактически имена строк фрейма данных.Чтобы изменить их, вы можете сделать что-то вроде:

rownames(dd) = 1:dim(dd)[1]

или

rownames(dd) = 1:nrow(dd)

Лично я никогда не использую имена строк.

В вашем примере я подозреваю, что вам не нужно беспокоиться о них, так как вы просто переименовываете их 1 в n.В частности, когда вы устанавливаете свой фрейм данных, имена строк снова будут неправильными.Например,

##Simple data frame
R> dd = data.frame(a = rnorm(6))
R> dd$type = c("A", "B")
R> rownames(dd)  = 1:nrow(dd)
R> dd
        a type
1  2.1434    A
2 -1.1067    B
3  0.7451    A
4 -0.1711    B
5  1.4348    A
6 -1.3777    B

##Basic subsetting
R> dd_sub = dd[dd$type=="A",]
##Rownames are "wrong"
R> dd_sub
       a type
1 2.1434    A
3 0.7451    A
5 1.4348    A
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...