Как заказать датафрейм по списку имен? - PullRequest
0 голосов
/ 05 июня 2018

Я хочу изменить порядок данных в соответствии со специальным списком.Например,

t1 <- c(0,0,1,0,0)
t2 <- c(1,1,1,1,1)
t3 <- c(1,2,3,4,5)
b <- c("a","b","c","d","e")
df <-data.frame(t1,t2,t3)
rownames(df) <- b
> df
  t1 t2 t3
a  0  1  1
b  0  1  2
c  1  1  3
d  0  1  4
e  0  1  5
list <- c("b","c","a","e","d")
#I want to order the rows follow the order of "list", ideal result is 
  t1 t2 t3
b  0  1  2
c  1  1  3
a  0  1  1
e  0  1  5
d  0  1  4

Как я могу это сделать?Заранее спасибо:)

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вы можете просто сделать b столбец фактора в кадре данных

t1 <- c(0,0,1,0,0)
t2 <- c(1,1,1,1,1)
t3 <- c(1,2,3,4,5)
b <- c("a","b","c","d","e")
df <-data.frame(t1,t2,t3, b =factor(x = b, levels = c("b","c","a","e","d")))
rownames(df) <- b

изменить порядок:

> df[order(df$b),]
  t1 t2 t3 b
b  0  1  2 b
c  1  1  3 c
a  0  1  1 a
e  0  1  5 e
d  0  1  4 d
0 голосов
/ 05 июня 2018

Мы можем использовать «список» (здесь это vector) в качестве имен строк, чтобы упорядочить их на основе (при условии, что «список» и имена строк «df» имеют одинаковую длину и имеютодинаковые значения)

df[list,]
#  t1 t2 t3
#b  0  1  2
#c  1  1  3
#a  0  1  1
#e  0  1  5
#d  0  1  4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...