我正在處理兩個資料框。我希望一個資料幀中的行順序與另一個資料幀中的行順序相匹配。
例如:
terms_1 <- c("Cat", "Hat", "Dog", "Bat", "Mat", "Cow")
terms_2 <- c("Dog", "Cow", "Mat", "Cat", "Hat", "Bat")
terms_1_df <- data.frame(terms = terms_1, values = sample(seq(1,100, 1), replace = T, length(terms_1)))
terms_2_df <- data.frame(terms = terms_2, values = sample(seq(1,100, 1), replace = T, length(terms_2)))
> terms_1_df
terms values
1 Cat 22
2 Hat 47
3 Dog 91
4 Bat 48
5 Mat 60
6 Cow 46
> terms_2_df
terms values
1 Dog 94
2 Cow 35
3 Mat 68
4 Cat 21
5 Hat 67
6 Bat 60
我希望terms_2_df重新排列中的行以匹配中的terms行的順序terms_1_df
謝謝!
uj5u.com熱心網友回復:
我們可以使用match兩個資料集之間的“terms”列來回傳與第二個資料相同的順序
terms2_df_new <- terms_2_df[match(terms_1_df$terms, terms_2_df$terms),]
-輸出
terms_2_df_new
terms values
4 Cat 30
5 Hat 55
1 Dog 60
6 Bat 93
3 Mat 46
2 Cow 1
uj5u.com熱心網友回復:
您可以使用factor和order-
terms_2_df[order(factor(terms_2_df$terms, unique(terms_1_df$terms))), ]
# terms values
#4 Cat 89
#5 Hat 34
#1 Dog 27
#6 Bat 93
#3 Mat 38
#2 Cow 96
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324582.html
