我有一个数据框,其中列具有重复值,如
employee <- data.frame(name = c('John', 'Joe', 'Mat', 'John', 'Joe'),
salary = c(1500, 2000, 1700, 1210, 2100),
startdate = c('2012-05-10', '2015-02-17',
'2014-09-11', '2011-11-23', '2010-10-27'))
Run Code Online (Sandbox Code Playgroud)
我可以在第1列中获得独特的元素
unique(employee$name)
Run Code Online (Sandbox Code Playgroud)
但是,我想让name列中的每个项目都是唯一的.如果出现第二次出现_1的话.如果它再次出现_2.因此,在员工数据框中,我想将第二列更改为
John
Joe
Mat
John_1
Joe_1
Run Code Online (Sandbox Code Playgroud)
有没有办法除了循环它?
我们可以使用make.names同unique=TRUE.默认情况下,.将后缀数字之前追加,并且可以被替换_使用sub
employee$name <- sub('[.]', '_', make.names(employee$name, unique=TRUE))
Run Code Online (Sandbox Code Playgroud)
或者@DavidArenburg提出的更好的选择.如果name列是factor类,则在应用之前将输入列转换为characterclass(as.character)make.unique
make.unique(as.character(employee$name), sep = "_")
#[1] "John" "Joe" "Mat" "John_1" "Joe_1"
Run Code Online (Sandbox Code Playgroud)