全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
905 1
2018-04-05
各位大大好,

假如有如下数据,
indexnameamount
1A

10

2B

14

3C

3

4A

4

5A

15

6C

9

7B

12

8C

6

9A

7



要实现效果如下

indexnameamount對上一筆位置(index)對上一筆amount
1A

10

NANA
2B

14

NANA
3C

3

NANA
4A

4

1

10

5A

15

4

4

6C

9

3

3

7B

12

2

14

8C

6

6

9

9A

7

5

15



有什么好的办法不用循环都能做到呢?
謝謝


二维码

扫码加我 拉你入群

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

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

全部回复
2018-4-6 11:29:58
复制代码

程序执行结果保存在df数据框中。论坛好像不支持美元符号,以上代码把#改成$即可。
需要注意的几个点:
1、定义了prev函数,参数为x,x可以为A、B、C。
2、在prev函数中需要对df变量进行操作,由于涉及函数变量作用域的问题,函数体中用到了<<-赋值方法。
3、用到了dplyr::lag()函数,用于对A、B、C的索引进行滞后。
4、使用了factor函数提取name列中的因子,当然也可以分别执行prev("A")、prev("B")、prev("C"),但如果name列涉及更多的元素(比如26个字母),这种办法可以简化操作。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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