2017-07-24 99 views
0

我正在尋找跨兩列包含不同數據的合併。那就是在一列中它是空的,它在另一列中不是空的,基本上是從研究中的兩個不同條件收集的數據,爲了運行分析,我需要結合這些數據並運行t檢驗。我想知道如何數值列與dplyr結合 -使用dplyr跨兩列合併

check <- check %>% 
    mutate(cat = rowSums(.[1:2])) 


> dput(head(check)) 
structure(list(t7_1_ExpA_Intro1 = c(NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_), t7_1_ExpB_Intro1 = c(NA, 
NA, NA, 3L, NA, NA), t7_1_ExpA_DV = c(NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_), t7_1_ExpB_DV = c(NA, 
NA, NA, 3L, NA, NA), cat = c(NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_)), .Names = c("t7_1_ExpA_Intro1", 
"t7_1_ExpB_Intro1", "t7_1_ExpA_DV", "t7_1_ExpB_DV", "cat"), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame")) 
+1

這將是更容易幫助你,如果你提供一個[重複的例子(https://stackoverflow.com/questions/5963269/how-to-make具有樣本輸入數據和期望的輸出的可重複示例)。 – MrFlick

+0

當沒有數據時,它是「NA」還是「0」?你可以使用'max'函數 – Masoud

+0

'check $ cat < - apply(check [,1:2],1,max)'這應該適用於這兩種情況。 – Masoud

回答

2

可以使用dplyr::coalesce功能,從首次出現非NA列選擇值;說,如果你想在前兩列組合:

check %>% mutate(cat = coalesce(t7_1_ExpA_Intro1, t7_1_ExpB_Intro1)) 
# or check %>% mutate(cat = do.call(coalesce, .[1:n])) if you have more columns to coalesce 

# A tibble: 6 x 5 
# t7_1_ExpA_Intro1 t7_1_ExpB_Intro1 t7_1_ExpA_DV t7_1_ExpB_DV cat 
#    <int>   <int>  <int>  <int> <int> 
#1    NA    NA   NA   NA NA 
#2    NA    NA   NA   NA NA 
#3    NA    NA   NA   NA NA 
#4    NA    3   NA   3  3 
#5    NA    NA   NA   NA NA 
#6    NA    NA   NA   NA NA 
+1

超級,非常感謝! – Lowpar