全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
9098 17
2022-02-24

有一个表格df1,包括id, t, dm, s这4列。其中

* id有重复。这里只列出id = 1,2的情况,但是真实数据中还有很多,id=1,2,...,100.

* t可以理解为时间,1-7天,或者1-7月等等。

* dm是另一个参数,要根据dm做一些lag。

* s是一些数值。

df1

df1


根据这些来计算df2中x的值。具体算法如下:

id = 1时,dm = 1。x的值比s的值滞后(lag)一行。

id = 2时,dm有两个值(2和3)。

dm = 2时, x的值比s的值滞后(lag)两行。

dm = 3时, x的值比s的值滞后(lag)三行。

其中第12行的x值为0

df2

df2

这个如何实现呢?

我已经试过left join,shift等办法,都没有搞定。



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-2-25 00:12:05
你的描述并不清楚,为什么dm = 1,你是所有的数据都往后移一格,但是dm = 2的时候只有前两个数据往后移两格,而不是所有数据都往后移两格,如果id = 2, dm = 1,3或者1,2的话又会是怎么样?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-25 10:17:50
谢谢关注。你说的这两种情况我在下面列出来了。

当id = 2, dm = 1,3时,x的值为0 4 8 0 0 3 5.
df3_x.png
当id = 2, dm = 1,2时,x的值为0 4 8 0 3 5 45
df4_x.png




附件列表
df3_x.png

原图尺寸 7.53 KB

df3_x.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-26 01:53:20
wx2123 发表于 2022-2-25 10:17
谢谢关注。你说的这两种情况我在下面列出来了。

当id = 2, dm = 1,3时,x的值为0 4 8 0 0 3 5.
实际上你并没有回答我的问题,只是把其中的一种结果列出来了而已,关键是
dm = 2的时候只有前两个数据往后移两格,而不是所有数据都往后移两格
这个问题本来是要了解x移动的规则,但你现在只列出了两种情况,dm = {1,1,2,2,2,2,2} 和 dm = {2,2,3,3,3,3,3}
那如果是dm = {1,1,1,1,1,2,2},dm = {2,2,2,2,2,1,1}, dm = {1,1,1,1,1,3,3}, dm = {3,3,3,3,1,1,1},dm = {1,2,3,3,3,3,3,3}, dm = {3,3,3,2,2,2,1}这些情况呢,dm的取值和组合有什么限制吗?
请把你的移动规则描述清楚(或者设计清楚),否则确实不知道你想干什么。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-26 03:36:48
根据你目前的描述,可以这样处理,当然,随着描述的进一步准确,潜在的bug可以修复
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-26 11:59:04
感谢回复,我先试试看。然后在想想lag的规则到底是什么。我也在摸索。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群