gpt4 book ai didi

r - 根据列中的信号填充值

转载 作者:行者123 更新时间:2023-12-04 08:51:59 26 4
gpt4 key购买 nike

在下面的数据中,我想在每个 1 后增加单元格值,但如果 Z.out = 1,则在下一个单元格将其重置为零。这是一个示例。
起始数据:

Z   B_1 C_1 D_1 E_1 F_1
0 0 0 0 0 0
0 1 0 0 1 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 0 0
1 0 0 0 0 0
0 0 0 0 0 1
0 1 0 0 0 0
0 0 1 1 0 0
0 0 0 1 0 0
0 1 0 1 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
1 0 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 0
期望输出:
Z   B_1 C_1 D_1 E_1 F_1
0 0 0 0 0 0
0 1 0 0 1 0
0 1 0 0 1 0
0 1 0 0 1 0
0 1 0 0 1 0
0 1 1 0 1 0
0 1 1 0 1 0
1 1 1 0 1 0
0 0 0 0 0 1
0 1 0 0 0 1
0 1 1 1 0 1
0 1 1 2 0 1
0 2 1 3 0 1
0 2 1 3 0 1
0 2 1 3 0 1
0 2 1 3 0 1
1 2 1 3 0 1
0 0 0 0 1 0
0 0 0 0 1 0
我想我可以使用 df <- df %>% transmute_at(vars(contains("_1")),) 来定位正确的列并将它们替换为所需的输出,但我还没有找到函数部分的正确语法的蜕变。我正在尝试使用 cumsum() 来通过每一列携带值,但是当我尝试根据 z.out 向后翻转时,我只是以错误告终。
谢谢您的帮助!

最佳答案

dplyr可能是:

df %>%
group_by(grp = cumsum(Z == 0 & lag(Z, default = first(Z)) == 1)) %>%
mutate(across(-Z, cumsum))

Z B_1 C_1 D_1 E_1 F_1 grp
<int> <int> <int> <int> <int> <int> <int>
1 0 0 0 0 0 0 0
2 0 1 0 0 1 0 0
3 0 1 0 0 1 0 0
4 0 1 0 0 1 0 0
5 0 1 0 0 1 0 0
6 0 1 1 0 1 0 0
7 0 1 1 0 1 0 0
8 1 1 1 0 1 0 0
9 0 0 0 0 0 1 1
10 0 1 0 0 0 1 1
11 0 1 1 1 0 1 1
12 0 1 1 2 0 1 1
13 0 2 1 3 0 1 1
14 0 2 1 3 0 1 1
15 0 2 1 3 0 1 1
16 0 2 1 3 0 1 1
17 1 2 1 3 0 1 1
18 0 0 0 0 1 0 2
19 0 0 0 0 1 0 2

关于r - 根据列中的信号填充值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64053508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com