全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1378 6
2021-02-17
各位大神,请求帮助!!!我现在想新增一列;这新增的一列是根据每个ID的Time>0的DV值减去Time<0的DV值,重新获得的新的DV值成为一列;请问这个用R语言代码应该怎么写啊?感谢各位大神了!!!像下面的数据集一样。DDV是新增的一列。time<=0的看作是基线值0;后面的数值减去之前的基线值。这里的一个难点是:如何根据ID进行分类呢?
dda50d9b972bf7fc8e744c97eff6ec6.png
二维码

扫码加我 拉你入群

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

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

全部回复
2021-2-18 09:55:41
每个ID只有一个DV负值吗?
二维码

扫码加我 拉你入群

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

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

2021-2-18 10:43:33
热爱编码的秃头女孩 发表于 2021-2-17 21:22
各位大神,请求帮助!!!我现在想新增一列;这新增的一列是根据每个ID的Time&gt;0的DV值减去Time
ok
二维码

扫码加我 拉你入群

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

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

2021-2-18 13:28:34
先找出每个ID的基线值,然后用这个数据和原始数据用ID匹配合并,得到新的数据会比原数据多一列基线值,然后就简单了。
二维码

扫码加我 拉你入群

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

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

2021-2-18 18:55:05
假设每ID组,可能有多个time负值,也可能没有负值,我们就以time最小值作为基线。
做了个示例数据money.csv:
       ID  time   DV
1  111001 -0.05  6.8
2  111001  0.00  0.0
3  111001  1.00  6.0
4  111001  2.00  5.3
5  111001  4.00  4.8
6  110100  1.00  2.7
7  110100  3.00  8.0
8  110100  2.00  4.0
9  110100 -0.03  6.0
10 110100 -0.04  2.0
11 110101 -0.30  3.0
12 110101  2.00  9.0
13 110101  4.00  1.0
14 111111 -0.40  7.0
15 111111  1.00 10.0
16 111111  2.00  2.0
17 111111  3.00  3.0
应该和你的数据差不多吧,这里ID是没有排序的,所以处理时需留意。
代码差不多是这样的
复制代码

代码在这里可能存在现实问题,是美元符号的原因。正确的代码显示,可以看下面的图:
111111122.png

二维码

扫码加我 拉你入群

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

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

2021-2-19 18:31:44
是的
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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