Я хотел вычесть один столбец из другого в R, и это оказалось сложнее, чем я думал.
Предположим, это мои данные (столбцы a
и b
), а столбец c
- это то, что я хочу, а именно a - b
, но сохраняю a
при b==NA
и наоборот:
a b c
1 2 1 1
2 2 NA 2
3 NA 3 3
4 NA NA NA
Теперь я пробовал разные вещи, но большую часть времени он возвращал NA, когда хотя бы один столбец был NA. Например:
matrixStats::rowDiffs(data, na.rm=T) # only works for matrix-format, and returns NA's
dat$c <- dat$a - dat$b + ifelse(is.na(dat$b),dat$a,0) + ifelse(is.na(dat$a),dat$b,0) # seems like a desparately basic solution, but not even this does the trick as it also returns NA's
apply(dat[,(1:2)], MARGIN = 1,FUN = diff, na.rm=T) # returns NA's
dat$b<-dat$b*(-1)
dat$c<-rowSums(dat,na.rm=T) # this kind of works but it's a really ugly workaround
Кроме того, если вы можете придумать решение dplyr
, поделитесь своими знаниями. Я даже не знал, что попробовать.
Удалит этот вопрос, если вы считаете, что он дублирует существующий, хотя ни один из существующих потоков не был особенно полезен.