Сохраняйте конечные нули при манипулировании вектором между символом и числом - PullRequest
1 голос
/ 15 апреля 2020

Мне кажется, это должно быть очевидно, но я этого не вижу. У меня есть фрейм данных, мне нужно изменить порядок с именами столбцов, число которых хранится как символы Например, names (df) выдает c («1.5», «1.51», «1.0»). Мой подход заключался в извлечении имен, преобразовании в число, сортировке, преобразовании в символ, переходе к индексированию R.

x <- c («1,5», «1,51», «1,0») </p>

y <-as.numeri c (x) </p>

1.50 1.51 1.00 # это дополняет его дополнительным 0, но я думаю, что могу жить с этим.

z <-sort (y) </p>

1,00 1,50 1,51 # там ничего не удивляет ...

as.character (z)

"1" "1,5" "1,51"

Я хотел бы сохранить конечные 0, либо относительно исходного входного вектора, либо дополненного выходного вектора из as.numeri c.

1 Ответ

1 голос
/ 15 апреля 2020

предположим, что у вас есть следующий df:

df <- data.frame("a", "b", "c")
names(df)<- c("1.5", "1.51", "1.0")

> df
  1.5 1.51 1.0
1   a    b   c

Мы можем просто получить порядок столбцов и вызвать их в таком порядке следующим образом

df[,order(as.double(names(df)))]

 1.0 1.5 1.51
1   c   a    b

Это позволяет вам сохранить оригинальное форматирование имен ваших столбцов

...