Измените индексный номер кадра данных
После того, как я закончил некоторые манипуляции в 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
Пожалуйста, объясните, как я могу это получить?
Ответы
Ответ 1
Это rownames
вашего фрейма данных, по умолчанию это 1:nrow(dfr)
. Когда вы переупорядочиваете данные, исходные имена розеток также переупорядочиваются. Чтобы строки нового порядка перечислялись последовательно, просто используйте:
rownames(dfr) <- 1:nrow(dfr)
Ответ 2
Или просто
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
Индекс - это фактически имена строк фрейма данных. Чтобы изменить их, вы можете сделать что-то вроде:
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