首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符添加到重复字符串中,然后将其移除

如何将字符添加到重复字符串中,然后将其移除
EN

Stack Overflow用户
提问于 2016-08-16 07:56:23
回答 1查看 60关注 0票数 2

我有一个包含一列字符串和十列值的数据。我不能将第一列设置为行列,并且我发现我在第一列中复制了字符串。所以我所做的就是像下面这样识别他们

代码语言:javascript
复制
dftt <- data.frame(myname[which(duplicated(myname)),])

dftt的一小部分如下所示

代码语言:javascript
复制
dftt<- structure(list(V1 = structure(c(6L, 6L, 4L, 6L, 2L, 9L, 10L, 
1L, 7L, 11L, 10L, 3L, 8L, 5L, 10L, 10L, 1L, 10L, 11L, 1L), .Label = c("alp-1", 
"cfim-2", "eps-8", "fln-2", "istr-1", "lev-11", "pqn-87", "ret-1", 
"sao-1", "sup-26", "vab-10"), class = "factor")), .Names = "V1", class = "data.frame", row.names = c(NA, 
-20L))

我想要的是在重复字符串中添加一些东西,使它们成为唯一的字符串,这样我就可以将其设置为行名,但保留它并将其编入索引,或者在我操作数据之后,将它们清除掉。

例如,它可以是数字或特定的字母。

代码语言:javascript
复制
#       V1
#1  lev-11
#2  lev-11_nik1
#3   fln-2
#4  lev-11_nik2
#5  cfim-2
#6   sao-1
#7  sup-26
#8   alp-1
#9  pqn-87
#10 vab-10
#11 sup-26_nik1
#12  eps-8
#13  ret-1
#14 istr-1
#15 sup-26_nik2
#16 sup-26_nik3
#17  alp-1_nik1
#18 sup-26_nik4
#19 vab-10
#20  alp-1_nik2

我知道我可能必须使用paste0或粘贴,但我不知道如何使用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-16 08:11:36

首先,确定重复的:

代码语言:javascript
复制
dup <- duplicated(dftt$V1)

现在,使用make.unique()使列中的所有值都是唯一的。

代码语言:javascript
复制
dftt$V1 <- make.unique(as.character(dftt$V1), sep = "_nik")
head(dftt)
#             V1
# 1       lev-11
# 2  lev-11_nik1
# 3        fln-2
# 4  lev-11_nik2
# 5       cfim-2
# 6        sao-1

若要将值返回到其原始状态,请从字符串的末尾移除_nik和尾随数字,并使用sub()

代码语言:javascript
复制
dftt$V1[dup] <- sub("_nik\\d+$", "", dftt$V1[dup])
head(dftt)
#        V1
# 1  lev-11
# 2  lev-11
# 3   fln-2
# 4  lev-11
# 5  cfim-2
# 6   sao-1

请注意,这将将列类型从一个因素更改为另一个字符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38969434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档