如何解决如何在R中以字符形式建立条件滚动序列
$language
代表数据中的某些组ID
$forceTranslation
代表我必须在其上执行计算的某些字符类型id
MessageSource
是生效日期,将用于其他分析。 (但是,我保留了相同的内容,以便保留记录的顺序)
return [
// other options
'components' => [
'i18n' => [
'translations' => [
'frontend*' => [
'class' => 'yii\i18n\PHPMessageSource','basePath' => '@common/messages','forceTranslation' => true,],// ...
],//other options
];
是要执行的操作。该列具有两个值“ add”和“ reduce”。每个组g
的数量相等。意味着如果有5条记录具有“添加”,则同一组中将有5条“减少”。记录为数据帧中的有序因子。
基本上,我必须按照以下规则创建新列-
-
由于每组的第一条记录将始终为“添加”,因此此处可以使用
x
的确切值 -
在第二条及以后的记录中,在每个组中,假设“操作”值为“添加”,则
date
的值可能会粘贴到先前的记录 -
在第二条及以后的记录中,在每个组中,假设“操作”值为“减少”,则
action
的值可能会从先前的记录中删除
g
的示例数据是
x
x
可能类似于-
x
谢谢。
解决方法
您可以从accumulate2
包中使用purrr
。
library(dplyr)
library(purrr)
df %>%
mutate(result = unlist(accumulate2(
x,action[-1L],~if (..3 == "add") paste0(.,.y) else sub(.y,"",.)
)))
输出
g x date action result
1 1 1_ 2020-01-01 add 1_
2 1 1_ 2020-01-03 add 1_1_
3 1 2_ 2020-01-04 add 1_1_2_
4 1 2_ 2020-01-05 add 1_1_2_2_
5 1 2_ 2020-01-10 reduce 1_1_2_
6 1 1_ 2020-01-14 reduce 1_2_
7 1 2_ 2020-01-14 reduce 1_
8 1 1_ 2020-01-15 reduce
9 1 1_ 2020-01-16 add 1_
10 1 1_ 2020-01-18 add 1_1_
11 1 1_ 2020-01-19 reduce 1_
12 1 2_ 2020-01-22 add 1_2_
13 1 2_ 2020-01-25 reduce 1_
14 1 2_ 2020-01-26 add 1_2_
15 1 1_ 2020-01-27 reduce 2_
16 1 2_ 2020-01-30 reduce
17 2 3_ 2020-01-01 add 3_
18 2 3_ 2020-01-03 add 3_3_
19 2 3_ 2020-01-14 reduce 3_
20 2 3_ 2020-01-15 reduce
21 2 4_ 2020-01-16 add 4_
22 2 4_ 2020-01-27 reduce
23 3 3_ 2020-01-14 add 3_
24 3 3_ 2020-01-22 reduce
25 3 3_ 2020-01-30 add 3_
26 3 3_ 2020-02-05 reduce
27 3 3_ 2020-02-09 add 3_
28 3 3_ 2020-02-17 reduce
29 4 4_ 2020-04-14 add 4_
30 4 5_ 2020-04-22 add 4_5_
31 4 4_ 2020-04-23 reduce 5_
32 4 5_ 2020-04-29 reduce
33 5 6_ 2020-02-17 add 6_
34 5 6_ 2020-02-27 add 6_6_
35 5 6_ 2020-03-07 reduce 6_
36 5 6_ 2020-03-26 reduce
37 6 7_ 2020-04-12 add 7_
38 6 7_ 2020-04-15 reduce
39 7 7_ 2020-02-11 add 7_
40 7 7_ 2020-02-17 reduce
41 8 8_ 2020-03-07 add 8_
42 8 8_ 2020-03-20 reduce
43 8 8_ 2020-03-20 add 8_
44 8 8_ 2020-03-23 reduce
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。