我有一个tibble:

tibble(country = c("USA","USA","USA","USA","CHINA","CHINA","CHINA","CHINA","SPAIN","SPAIN","SPAIN","SPAIN"), 
       values = c(10,20,100,30,60,70,80,90,100,20,100,90))

如何生成下一列?条件是"填充"列从值1开始,递增+1,当值==100时,它重置为值1,并再次递增-请参阅上一个示例西班牙,其中更改发生了两次.

所以最后的tibble是:

tibble(country = c("USA","USA","USA","USA","CHINA","CHINA","CHINA","CHINA","SPAIN","SPAIN","SPAIN","SPAIN"), 
       values = c(10,20,100,30,60,70,80,90,100,20,100,90), 
       population = c(1,2,1,2,1,2,3,4,1,2,1,2))

有人帮忙吗谢谢

推荐答案

我们可以在"国家"和逻辑向量的累积和上使用rowid

library(dplyr)
library(data.table)
df1 %>%
    mutate(population = rowid(country, cumsum(values == 100)))

-输出

# A tibble: 12 × 3
   country values population
   <chr>    <dbl>      <int>
 1 USA         10          1
 2 USA         20          2
 3 USA        100          1
 4 USA         30          2
 5 CHINA       60          1
 6 CHINA       70          2
 7 CHINA       80          3
 8 CHINA       90          4
 9 SPAIN      100          1
10 SPAIN       20          2
11 SPAIN      100          1
12 SPAIN       90          2

R相关问答推荐

如何识别组内的行是否在同一列中具有值?

替换字符的所有实例,但仅限于匹配字符串中

R包terra在投影时如何决定模板格栅属性?

分组时间连续值

以R表示的gglikert地块调整总数

是否有任何解决方案可以优化VSCode中RScript的图形绘制?

提取rame中对应r中某个变量的n个最小正值和n个最大负值的条目

根据shiny 应用程序中的数字输入更改图标 colored颜色

向gggplot 2中的数据和轴标签添加大写和星号

为什么观察不会被无功值变化触发?

迭代到DataFrame列并获得成对的值列表(col1->;col2、col2->;col3、col3->;col4等)的正确方法.

用R ggplot2求上、下三角形中两个变量的矩阵热图

更改STAT_VALLES/STAT_PEAKS中的箭头线宽/大小

使用R中的dist()迭代ID匹配的欧几里德距离

`夹心::vcovCL`不等于`AER::tobit`标准错误

如何计算R glm probit中的线性预测因子?

将数据集旋转到长格式,用于遵循特定名称模式的所有变量对

使用ggplot2中的sec_axis()调整次轴

主题(Legend.key=Element_RECT(Fill=&Quot;White&Quot;))不起作用

R中的Desolve:返回的导数数错误