我有一个包含一列字符串和十列值的数据。我不能将第一列设置为行列,并且我发现我在第一列中复制了字符串。所以我所做的就是像下面这样识别他们
dftt <- data.frame(myname[which(duplicated(myname)),])dftt的一小部分如下所示
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))我想要的是在重复字符串中添加一些东西,使它们成为唯一的字符串,这样我就可以将其设置为行名,但保留它并将其编入索引,或者在我操作数据之后,将它们清除掉。
例如,它可以是数字或特定的字母。
# 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或粘贴,但我不知道如何使用
发布于 2016-08-16 08:11:36
首先,确定重复的:
dup <- duplicated(dftt$V1)现在,使用make.unique()使列中的所有值都是唯一的。
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()。
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请注意,这将将列类型从一个因素更改为另一个字符。
https://stackoverflow.com/questions/38969434
复制相似问题