2016-03-01 82 views
0

數據: -排序一個數據幀中的特定行中的R

df:- 

    Name  Date 
1 A  2015-01-01 
2 B  2016-05-01 
3 B  2015-01-05 
4 A  2015-12-25 
5 C  2015-01-01 

代碼: -

df <- df[order(df[,c("Name")]),] 
> df 
    Name  Date 
1 A 2015-01-01 
4 A 2015-12-25 
2 B 2016-05-01 
3 B 2015-01-05 
5 C 2015-01-01 
index= which(df$Name=="B") 
start= index[1] 
end=index[length(index)] 
df[start:end,] <- df[order(df[start:end,("Date")]),] 

> df 
    Name  Date 
1 A 2015-01-01 
4 A 2015-12-25 
2 A 2015-12-25 
3 A 2015-01-01 
5 C 2015-01-01 

如可以看到的,這不是我所期待的輸出。我首先按對數據框進行排序,名稱爲,效果很好,然後嘗試對具體名稱的各行進行排序。我找到一個特定名稱的起始和結束索引,並嘗試按日期對特定行進行排序。第二種排序導致這種錯誤輸出。請指教,也有這個更簡單的方法嗎?提前致謝。

預期輸出: -

Name  Date 
1 A 2015-01-01 
4 A 2015-12-25 
3 B 2015-01-05 
2 B 2016-05-01 
5 C 2015-01-01 
+1

什麼是你想在這裏做什麼? – mtoto

+0

@mtoto我想排序所有行的名稱爲「B」的日期 – Jain

+0

@Jain我認爲你在你的文章中有一個錯字,你有'dd [order(df [,c(「Name」)]] ),''但我想你想'dd'是'df'。 – steveb

回答

2

看樣子,你還不明白,order可以採取初級和次級排序向量:

> df1 <- read.table(text=" Name  Date 
+ 1 A  2015-01-01 
+ 2 B  2016-05-01 
+ 3 B  2015-01-05 
+ 4 A  2015-12-25 
+ 5 C  2015-01-01", head=TRUE) 
> df1[ order(df1$Name, df1$Date) , ] 
    Name  Date 
1 A 2015-01-01 
4 A 2015-12-25 
3 B 2015-01-05 
2 B 2016-05-01 
5 C 2015-01-01 
+0

...和大專等 –

+0

我確實想過要添加大專,甚至quaterneray或更高的「大學」是可能的......,並且可能應該建議閱讀幫助頁面,其中用法部分將顯示如初始參數爲三點所示,任意數量的向量是可能的。 –

+0

[more ary's](http://giphy.com/gifs/cowbell-snl-saturday-night-live-nUAuTPG3BqFC8) –

相關問題