Я хотел бы использовать сжатие 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
Для строки, где a = 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
соответственно.
Спасибо за совет.