【发布时间】:2018-02-03 13:17:48
【问题描述】:
我有类似以下的数据,但更大
boat = c(1,1,1,1,1,1,1,2,2,2,2,2,2)
species = c("cod", "haddock", "ling",
"cod", "haddock", "ling", "tusk",
"cod", "haddock", "ling",
"cod", "haddock", "ling")
date = c(as.Date(c("1.03.2017","1.03.2017","1.03.2017",
"2.03.2017", "2.03.2017", "2.03.2017","2.03.2017",
"4.03.2017","4.03.2017","4.03.2017",
"7.03.2017", "7.03.2017", "7.03.2017"), "%d.%m.%Y"))
df <- data.frame(boat, species, date)
df
boat species date
1 cod 01.03.2017
1 haddock 01.03.2017
1 ling 01.03.2017
1 cod 02.03.2017
1 haddock 02.03.2017
1 ling 02.03.2017
1 tusk 02.03.2017
2 cod 04.03.2017
2 haddock 04.03.2017
2 ling 04.03.2017
2 cod 07.03.2017
2 haddock 07.03.2017
2 ling 07.03.2017
我想创建一个附加列,按船顺序排列日期,以便我的数据集如下所示。
boat species date rank
1 cod 01.03.2017 1
1 haddock 01.03.2017 1
1 ling 01.03.2017 1
1 cod 02.03.2017 2
1 haddock 02.03.2017 2
1 ling 02.03.2017 2
1 tusk 02.03.2017 2
2 cod 04.03.2017 1
2 haddock 04.03.2017 1
2 ling 04.03.2017 1
2 cod 07.03.2017 2
2 haddock 07.03.2017 2
2 ling 07.03.2017 2
我试过下面的代码
library(dplyr)
df %>%
group_by(boat, species) %>%
mutate(Order = rank(date))
但是以前没有出现过的物种在第一次出现时会被赋予“1”级。 任何帮助表示赞赏。
【问题讨论】:
-
“我想创建一个额外的列,按船顺序排列日期”如果你只想要他们乘船为什么你
group_by()boat和@987654327 @?但是,我可以使用此代码获得所需的输出。 -
当您在输出上运行代码注释第 7 行(象牙)时,它应该排在第 2 位,而不是第 1 位。