magrittr と dplyr の簡潔さを使用して、他の列の値に基づいて列のサブセットの行間で単一の値をコピーしたいと思います。これは簡単な例です。このアイデアを、コマンドの長いパイプ内に複数の条件を持つ大規模なデータセットの多くの列に適用したいと考えています。
データフレームを取得しdf <- data.frame(a = 1:5, b = 6:10, x = 11:15, y = 16:20)
ます:
a b x y
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
行 where について、との値を行 wherea = 5
の値に置き換えて、次のようにします。x
y
b = 7
a b x y
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 12 17
この試みは失敗します:
foo <- function(x){ifelse(df$a == 5, df[df$b == 7, .(df$x)], x)}
df %<>% mutate_each(funs(foo), x, y)
私が得ることができる最も近いものは次のとおりです。
bar <- function(x){ifelse(df$a == 5, df[df$b == 7, "x"], x)}
df %<>% mutate_each(funs(bar), x, y)
しかし、これは両方の値をそれぞれ と ではなく からの値に置き換えるため、正しくありませx
ん。x
y
アドバイスをありがとう。