2016-08-16 6 views
2

文字列の列と値の列が10列あるデータがあります。私は行の列として最初の列を設定することはできませんと私は私の最初の列に文字列が重複していることを考え出した。そう私がやったことは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)) 

下に表示され

dftt <- data.frame(myname[which(duplicated(myname)),]) 

以下のようにそれらを同定することでした行名としてそれを設定しても維持し、それか、私がデータを操作した後よりも、何かのインデックスすることができ、私はそれが数または特定の文字可能性の例として、それら

を取り除くこと

#  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またはペーストを使用する必要があります知っているが、私は重複を決定する方法

答えて

2

まず、知らない:

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 

値を元の状態に戻すには、 sub()の文字列の末尾から_nikと末尾の数字(複数可):これは文字に因子から列タイプを変更すること

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 

注意。

関連する問題