"суммировать" несколько неполных столбцов в 1 итоговый столбец

Я пытаюсь использовать R для объединения данных из разных наборов данных с помощью:

merge(x,y, all=T, by="ID")

После слияния у меня, очевидно, есть полный столбец идентификаторов, а остальные столбцы заполнены NA.

В целом это нормально, но на этот раз мне нужно создать еще один столбец, в котором будут сохранены все значения моего анализа из 3 предыдущих столбцов.

    Findings.x  Findings.y
1         <NA> Decreases
2   Increases       <NA>
3         <NA> Decreases 
4   Increases       <NA>
5         <NA> Increases 
6   Increases       <NA>
7         <NA> Decreases 

Вывод, который я ищу:

Findings.summary
1   Decreases
2   Increases
3   Decreases
4   Increases
5   Increases
6   Increases
7   Decreases

Какова хорошая стратегия для этого? Должен ли я объединить их по-другому?

Я хотел бы сохранить это просто и оставаться в R-base, если решение достаточно простое.

Редактировать:

В этом посте есть похожая проблема, я попытался применить это решение:

data.frame(a=data$a, mycol=apply(data[,-1],1,sum,na.rm=TRUE))

Но мои строки не числовые, так что это не работает.

Редактировать 2

Это решение того же поста решило проблему:

data$m = data$x  # your new merged column start with x
data$m[!is.na(data$y)] = data$y[!is.na(data$y)]  # merge with y
data$m[!is.na(data$z)] = data$z[!is.na(data$z)]  # merge with z

> data
  a  x  y  z m
1 A  1 NA NA 1
2 B  2 NA NA 2
3 C NA  3 NA 3
4 D NA NA  4 4
5 E NA NA  5 5

Это также работает со строками символов, если у вас есть лучшее решение, дайте мне знать.

0 ответов

Другие вопросы по тегам