【问题标题】:How to create an incrementing variable with 2 variables in R?如何在 R 中创建具有 2 个变量的递增变量?
【发布时间】:2020-09-16 00:04:36
【问题描述】:

我想从其他 2 个变量(Var1 和 Var2)创建一个递增变量(Id1 或 Id2)。

谢谢。 埃洛迪

EDIT(Aaron Montgomery 的可复制示例) 我想创建一个递增变量:“Id”。如果 VarA 是一个新值如果 VarB 是一个新值,则“Id”的值会发生变化。尤其是当 Id = 4 在预期表中时。

data_example <- data.table::fread("
VarA    VarB 
A1  B1    
A1  B2    
A1  B3 
A1  B4       
A2  B5   
A3  B6    
A4  B7   
A5  B7    
A5  B8   
A6  B9    
A7  B10    
A8  B10   
A9  B10")

预期表

VarA    VarB    Id
A1  B1  1
A1  B2  1 
A1  B3  1  
A1  B4  1  
A2  B5  2
A3  B6  3 
A4  B7  4
A5  B7  4 
A5  B8  4
A6  B9  5  
A7  B10 6 
A8  B10 6
A9  B10 6

【问题讨论】:

  • 我无法按照您的要求...您能提供您的预期输出吗?一个可重现的示例(以我们可以放入 R 控制台的代码形式,可能由 dput() 生成)也会有所帮助。

标签: r increment auto-increment


【解决方案1】:

这是使用 tidyverse 的一种解决方案

library(tidyverse)
data_example <- data.table::fread("
Var1    Var2    Id1 Id2
604211  1001    3   1
604211  1093    3   1
604211  1146    3   1
604211  1319    3   1
635348  1002    5   2
634849  1005    5   2
620861  1004    4   3
622281  1004    4   3
622281  1041    4   3
600044  1100    1   4
600049  1033    2   5
607692  1033    2   5
612595  1033    2   5")

data_example %>% 
  arrange(Var1,Var2) %>% 
  group_by(Var1) %>% 
  mutate(id1 = group_indices()) %>% 
  group_by(Var2) %>% 
  mutate(id2 = group_indices())

【讨论】:

  • 您的代码对我不起作用。我刚刚编辑了我原来的问题。
  • “mutate_impl(.data, dots) 中的错误:评估错误:缺少参数“.data”,没有默认值。”我认为 group_indices 函数至少需要一个变量作为参数,但是如果我输入 group_indices(Var1,Var2)、group_indices(Var1) 或 group_indices(Var2),它不会给出预期的表格。
猜你喜欢
  • 2021-09-13
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 2016-06-06
  • 2020-08-19
  • 2022-07-01
  • 1970-01-01
相关资源
最近更新 更多