当使用R在列中找到数字时,如何增加变量
我有一个数据框,如下所示当使用R在列中找到数字时,如何增加变量,r,R,我有一个数据框,如下所示 Col1 34 45 67 80 89 87 80 79.9 94 89 54 88 问题 我需要另一个名为Incremental\u count的变量,当它在col1中找到大于80的值时,它会增加该值,如下所示 col1 Incremental_count 34 0 45 0 67 0 80 1 89 1 87 1 80 1 79.9
Col1
34
45
67
80
89
87
80
79.9
94
89
54
88
问题我需要另一个名为
Incremental\u count
的变量,当它在col1中找到大于80的值时,它会增加该值,如下所示
col1 Incremental_count
34 0
45 0
67 0
80 1
89 1
87 1
80 1
79.9 0
94 2
89 2
54 0
88 3
56 0
76 0
83 4
55 4
col1 Incremental_count
34 0
45 0
67 0
80 1
89 1
87 1
80 1
79.9 1
94 2
89 2
54 3
88 3
56 3
76 3
83 4
55 4
请让我知道剧本
更新的问题我需要另一个名为
Incremental\u count
的变量,当它在col1中找到大于80的值时,该变量会增加该值,并且必须将增加的值保留到下面的行,尽管col1中的值小于80,如下所示
col1 Incremental_count
34 0
45 0
67 0
80 1
89 1
87 1
80 1
79.9 0
94 2
89 2
54 0
88 3
56 0
76 0
83 4
55 4
col1 Incremental_count
34 0
45 0
67 0
80 1
89 1
87 1
80 1
79.9 1
94 2
89 2
54 3
88 3
56 3
76 3
83 4
55 4
我们可以使用
rle
即从base R
运行长度编码来获得预期的输出
df1$Incremental_count <- inverse.rle(within.list(rle(df1$Col1 > 80),
values[values] <- seq_along(values[values])))
df1
# Col1 Incremental_count
#1 34.0 0
#2 45.0 0
#3 67.0 0
#4 80.0 0
#5 89.0 1
#6 87.0 1
#7 80.0 0
#8 79.9 0
#9 94.0 2
#10 89.0 2
#11 54.0 0
#12 88.0 3
df1$Incremental\u count 80),
值[values],如果我必须为下面的行保留递增的值而不是0,那么我应该做什么更改?@Anup你能用你想要的内容更新你的帖子吗expected@akrun这真的很酷,谢谢!即使在阅读了它之后,我也不太理解代码中的两个项目-在.list中的,
部分:这只是with()
的一个变体,还是它的作用?我找不到关于这个的很多文档。类似地,in.list
的参数的第二部分对我来说也不太清楚-您将seq_的结果沿着
分配给值[值]
,但这到底告诉函数做什么?如果你有时间,任何指点都将不胜感激@patrick谢谢,rle
的输出是一个列表
,它有方法使用内提取或进行一些修改。列表
它应该是对内的的修改,适用于列表
@akrun Done!!!!加油!!代码按要求工作,非常感谢大师。