2016-12-14 17 views
-2

こんにちは。2つのカラムのR関数比較

私は最近、私は次のことをしなければならなかった興味深い問題、渡って来ている>

は、我々は2つの整数値を持つ列があるとします。最初の各値について、その値が2番目の列の同じインデックスの値と同じでないかどうかを確認しなければなりません。そうであれば、最初の列の値に1を加えます。

これをforループで解決しました。ここでインデックスを繰り返し、それに応じて値を追加しましたが、これはRであるため、これを解決するためのR-ishの方法がさらにあることを願っています。私は>

sapply(column1, function(x) ifelse(x != column2, x+1, x)) 

のラインで考えていましたが、これはまだ動作しません。このようなやり方でこれができますか?

+0

あなたは2列または6列のデータフレームしか持たないので、この操作を2列ごとに行う必要がありますか?ありがとう! – Sotos

答えて

0

これは動作するようです:

df <- data.frame(a = c(1,2,3,4,5), b = c(1,3,3,4,4)) df$a <- ifelse(df$a != df$b, df$a+1, df$a)

サンプルデータがテーブルにこのようになります。それはこのようになります上記のコードを実行した後 a b 1 1 1 2 2 3 3 3 3 4 4 4 5 5 4

a b 1 1 1 2 3 3 3 3 3 4 4 4 5 6 4

+0

ありがとう!私はほとんどここにいた。 –

0

あなたは次のように論理サブセットを使用できます。

set.seed(123) 
x <- sample(1:100, 25) 
y <- sample(1:100, 25) 


x[3] <- 10 
y[3] <- 10 

x.orig <- x 
x[x != y] <- x[x != y] +1 

cbind(y, x.orig, x) 

#  y x.orig x 
# [1,] 71  29 30 
# [2,] 54  79 80 
# [3,] 10  10 10 
# [4,] 29  86 87 
# [5,] 15  91 92 
# [6,] 92  5 6 
# [7,] 85  50 51 
# [8,] 65  83 84 
# [9,] 74  51 52 
# [10,] 3  42 43 
# [11,] 44  87 88 
# [12,] 68  98 99 
# [13,] 20  60 61 
# [14,] 28  94 95 
# [15,] 88  9 10 
# [16,] 13  77 78 
# [17,] 35  21 22 
# [18,] 84  4 5 
# [19,] 31  27 28 
# [20,] 94  78 79 
# [21,] 12  72 73 
# [22,] 19  55 56 
# [23,] 37  90 91 
# [24,] 21  85 86 
# [25,] 66  81 82 
関連する問題