我正在寻找创建一个ID变量,以便可以将2行分组在一起以标识没有两对相同。
当前我的数据框看起来像这样
Column a Column b Column c
Tom K Adam
Greg R Adam
Troy K Lisa
Daniel R Lisa
John K Greg
Tom R Greg
Lisa K Adam
Greg R Adam
我希望它包括一个具有唯一ID变量的额外列,以便每对行(根据c列)可以组合在一起。
例如
Column a Column b Column c Column d
Tom K Adam 3226
Greg R Adam 3226
Troy K Lisa 3227
Daniel R Lisa 3227
John K Greg 3228
Tom R Greg 3228
Tom K Adam 3229
Greg R Adam 3229
重要的是,亚当在列c中出现了4次,但他的名字的每对配对都会创建一个新的唯一ID
任何帮助将不胜感激。
答案 0 :(得分:0)
我们可以检查'Columnc'的相邻行元素是否相等,获得逻辑向量的累加和并加3226
library(dplyr)
df1 %>%
mutate(Columnd = 3226 + cumsum(Columnc != lag(Columnc,
default = first(Columnc))))
# Columna Columnb Columnc Columnd
#1 Tom K Adam 3226
#2 Greg R Adam 3226
#3 Troy K Lisa 3227
#4 Daniel R Lisa 3227
#5 John K Greg 3228
#6 Tom R Greg 3228
#7 Lisa K Adam 3229
#8 Greg R Adam 3229
或者使用base R
的{{1}}
rle
df1$Columnd <- with(rle(df1$Columnc), rep(seq_along(values), lengths))