2017-09-08 8 views
0

Rの特定の変数に関して重複した新しい変数に索引を付ける必要があります。 のは、私は、次のデータセットを持っていると仮定しましょう:この場合特定の変数に関する重複の索引付け

a <- seq(from=0, to=1, by=.4) 
b <- seq(from=0, to=1, by=.4) 
c <- seq(from=0, to=1, by=.4) 
d <- seq(from=0, to=1, by=.4) 

df <- expand.grid(a=a, b=b, c=c, d=d) 

> df[1:20,] 
    a b c d 
1 0.0 0.0 0.0 0 
2 0.4 0.0 0.0 0 
3 0.8 0.0 0.0 0 
4 0.0 0.4 0.0 0 
5 0.4 0.4 0.0 0 
6 0.8 0.4 0.0 0 
7 0.0 0.8 0.0 0 
8 0.4 0.8 0.0 0 
9 0.8 0.8 0.0 0 
10 0.0 0.0 0.4 0 
11 0.4 0.0 0.4 0 
12 0.8 0.0 0.4 0 
13 0.0 0.4 0.4 0 
14 0.4 0.4 0.4 0 
15 0.8 0.4 0.4 0 
16 0.0 0.8 0.4 0 
17 0.4 0.8 0.4 0 
18 0.8 0.8 0.4 0 
19 0.0 0.0 0.8 0 
20 0.4 0.0 0.8 0 

、最初のエントリと10のエントリがに関してaとbと同一です。どのように値を割り当てることができますか?この組み合わせを持つすべての列(19行目)とそれ以外のすべての組み合わせ(2行目、11行目、20行目など)の新しい変数には "0.00-0.00"を指定します。

ありがとうございます!

答えて

1

duplicated(df[,c(1,2)]) 

、すなわち同様、元の行を取得... 10日、11日のような重複行を取得教えて試してみてください。第1、第2 ...

新しい列の元ならびに重複 e

df[duplicated(df[,c(1,2)], fromLast = TRUE) | duplicated(df[,c(1,2)]),"e"] <- paste0(df[duplicated(df[,c(1,2)], fromLast = TRUE) | duplicated(df[,c(1,2)]),1],"-",df[duplicated(df[,c(1,2)], fromLast = TRUE) | duplicated(df[,c(1,2)]),2]) 

> head(df) 
    a b c d  e 
1 0.0 0.0 0 0  0-0 
2 0.4 0.0 0 0 0.4-0 
3 0.8 0.0 0 0 0.8-0 
4 0.0 0.4 0 0 0-0.4 
5 0.4 0.4 0 0 0.4-0.4 
6 0.8 0.4 0 0 0.8-0.4 

メモの範囲を割り当てる

duplicated(df[,c(1,2)], fromLast = TRUE) 

:この例では、すべての行が嵌合重複/元の基準であり、従ってすべてに割り当てられた範囲

1

この

df$e <- paste(df$a,df$b) 

は私はあなたが何か他のものを探していた場合

+0

重複する値に関連付けられた基本的な整数を取得するために 'factor'を使用して潜在的にラッピングします。 – lmo

+0

あなたは例を挙げることができますか? –

関連する問題