小编Ale*_*xis的帖子

根据其他数据框替换特定值

首先,让我们从DataFrame 1(DF1)开始:

DF1 <- data.frame(c("06/19/2016", "06/20/2016", "06/21/2016", "06/22/2016", 
                    "06/23/2016", "06/19/2016", "06/20/2016", "06/21/2016",
                    "06/22/2016", "06/23/2016"),
                  c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2),
                  c(149, 150, 151, 152, 155, 84, 83, 80, 81, 97),
                  c(101, 102, 104, 107, 99, 55, 55, 56, 57, 58),
                  c("MTL", "MTL", "MTL", "MTL", "MTL", "NY", "NY", 
                    "NY", "NY", "NY"))
colnames(DF1) <- c("date", "id", "sales", "cost", "city")
Run Code Online (Sandbox Code Playgroud)

我也有DataFrame 2(DF2):

DF2 <- data.frame(c("06/19/2016", "06/27/2016", "06/22/2016", "06/23/2016"),
                  c(1, 1, 2, 2),
                  c(9999, 8888, 777, 555),
                  c("LON", "LON", "QC", …
Run Code Online (Sandbox Code Playgroud)

lookup r dataframe

10
推荐指数
1
解决办法
2263
查看次数

根据R中的日期(年度)创建排名

我们将从以下DataTable开始:

    id       date
 1:  1 2015-12-31
 2:  1 2014-12-31
 3:  1 2013-12-31
 4:  1 2012-12-31
 5:  1 2011-12-31
 6:  2 2015-12-31
 7:  2 2014-12-31
 8:  2 2014-01-25
 9:  2 2013-01-25
10:  2 2012-01-25

library(data.table)
DT <- data.table(c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2),
                 as.IDate(c("2015-12-31", "2014-12-31", "2013-12-31", "2012-12-31", 
                            "2011-12-31", "2015-12-31", "2014-12-31", "2014-01-25",
                            "2013-01-25", "2012-01-25")))
setnames(DT, c("id", "date"))
Run Code Online (Sandbox Code Playgroud)

对于每个唯一ID,我想创建一个排名.特定id的最新日期应该等级为0.我应该从该日期删除一年以获得排名-1.如果月份与0级日期不同,我们应该停止排名.例如,在第8行,对于id = 2,由于月份不是12月,我们应该停止排名.

我们会得到以下结果:

    id       date rank_year
 1:  1 2015-12-31         0
 2:  1 2014-12-31        -1
 3:  1 2013-12-31        -2
 4:  1 …
Run Code Online (Sandbox Code Playgroud)

r dataframe data.table

3
推荐指数
1
解决办法
59
查看次数

根据R中的日期(季度)创建排名

我们将从以下DataTable开始:

    id       date
 1:  1 2016-03-31
 2:  1 2015-12-31
 3:  1 2015-09-30
 4:  1 2015-06-30
 5:  1 2015-03-31
 6:  2 2016-03-31
 7:  2 2015-09-30
 8:  2 2015-06-30
 9:  2 2015-03-31
10:  2 2014-12-31

library(data.table)
DT <- data.table(c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2),
                 as.IDate(c("2016-03-31", "2015-12-31", "2015-09-30", "2015-06-30", 
                   "2015-03-31", "2016-03-31", "2015-09-30", "2015-06-30",
                   "2015-03-31", "2014-12-31")))
setnames(DT, c("id", "date"))
Run Code Online (Sandbox Code Playgroud)

对于每个唯一ID,我想创建一个排名.特定id的最新日期应该具有等级0.之后,我应该从该日期删除3个月(我不考虑天数)以获得等级-1的日期.我必须重复这一点,直到排名-19.添加包含排名的新列后.

最终输出看起来像那样(注意id = 2的排名):

    id       date rank_year
 1:  1 2016-03-31         0
 2:  1 2015-12-31        -1
 3:  1 2015-09-30        -2
 4:  1 …
Run Code Online (Sandbox Code Playgroud)

r dataframe data.table

2
推荐指数
1
解决办法
69
查看次数

标签 统计

dataframe ×3

r ×3

data.table ×2

lookup ×1