Конкатенация векторов на позициях АН - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть кадр данных в R, состоящий из нескольких столбцов.

Я нахожу себя в этой ситуации. x1 и x2 - это два столбца, и мне нужно объединить их в один столбец, как ясно показано в моем примере

x1 x2 
NA  3
NA  4
 1  NA
 2  NA

x_new
 3
 4
 1
 2

Я попробовал эту команду

x1[which(is.na(x1))]<-x2[which(is.na(x1))]

Но я бы хотел найти что-то более элегантное, в частности решение, включающее пакет dplyr.

Спасибо

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Пожалуйста, попробуйте ниже код

 zz = data.frame(X1=c(NA,NA,1,2),X2 = c(3,5,NA,NA),stringsAsFactors = F)

 mod_zz = cbind.data.frame(zz, newcol=c(na.omit(c(t(zz)))))

> mod_zz
  X1 X2 newcol
1 NA  3     3
2 NA  5     5
3  1 NA     1
4  2 NA     2
0 голосов
/ 08 ноября 2018

Есть несколько способов: (обернуть data.frame(x_new = ...) вокруг, если требуется data.frame.)

rowSums(df1, na.rm = T)

apply(df1, 1, na.omit)

df1<-
structure(list(x1 = c(NA, NA, 1L, 2L), x2 = c(3L, 4L, NA, NA)), row.names = c(NA, 
-4L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...