2016-03-01 65 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) –

相关问题