Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 合并行,以便合并值并忽略NAs_R - Fatal编程技术网

R 合并行,以便合并值并忽略NAs

R 合并行,以便合并值并忽略NAs,r,R,我有一个数据框,如下所示: TIMEdbMerge CopyNumber Study Sample HRE TC015II NA TC015 II neg TC015III 0 NA NA NA TC015III NA TC015 III neg TC015Quadrantic NA

我有一个数据框,如下所示:

TIMEdbMerge CopyNumber  Study     Sample       HRE
TC015II         NA     TC015        II        neg       
TC015III        0      NA           NA        NA    
TC015III        NA     TC015        III       neg   
TC015Quadrantic NA     TC015    Quadrantic    24    
TC016I          NA     TC016         I        NA    
TC016II         1      NA           NA        NA      
TC016II         NA     TC016        II        neg   
TC016Quadrantic NA     TC016    Quadrantic    6 
TC017I          NA     TC017        I         NA    
TC017II          3      NA          NA        NA
TC017II         NA     TC017        II         +
这是一个复杂的合并,我没有时间去弄清楚。作为一种解决方法,我只想合并重复的行,以便行中的实际值替换这对重复行的NAs,以便结果如下所示:

TIMEdbMerge CopyNumber  Study     Sample       HRE
TC015II         NA     TC015        II        neg           
TC015III        0      TC015        III       neg   
TC015           NA     TC015         Q        24    
TC016I          NA     TC016         I        NA    
TC016II         1      TC016        II        neg   
TC016Quadrantic NA     TC016    Quadrantic    6 
TC017I          NA     TC017        I         NA    
TC017II         3      TC017        II         +

我知道如何删除重复的行,但我不知道如何告诉r合并重复的行,但仅当值不是重复行中任何一行的NA时才使用该值。我应该使用聚合吗?

我们可以
na.locf
通过
ave
在每个组(“TIMEdbMerge”)中使用“CopyNumber”的非na元素填充na元素。然后删除包含“研究”、“样本”、“HRE”列的所有元素(如
NA
)的行

library(zoo)
df1$CopyNumber <- with(df1, ave(CopyNumber, TIMEdbMerge,
     FUN=function(x) na.locf(x, na.rm=FALSE)))
df1[rowSums(is.na(df1[3:5]))!=3,]
#       TIMEdbMerge CopyNumber Study     Sample  HRE
#1          TC015II         NA TC015         II  neg
#3         TC015III          0 TC015        III  neg
#4  TC015Quadrantic         NA TC015 Quadrantic   24
#5           TC016I         NA TC016          I <NA>
#7          TC016II          1 TC016         II  neg
#8  TC016Quadrantic         NA TC016 Quadrantic    6
#9           TC017I         NA TC017          I <NA>
#11         TC017II          3 TC017         II    +
数据
df1不错。左撇子成功了。我没有意识到,在我正在进行合并的列中,有一个数据帧中有一个尾随空格。我不知道空格会有效果,但你知道吗go@user3632206如果多列有空格,可以使用
str\u trim
。即
库(stringr);df1[]
library(dplyr)
 left_join(df1, filter(df1, !is.na(CopyNumber)) %>%
                       select(1:2), 
                 by='TIMEdbMerge') %>% 
                 select(-2) %>% 
                 filter(rowSums(is.na(.[2:4]))!=3)
df1 <- structure(list(TIMEdbMerge = c("TC015II", "TC015III", 
"TC015III", 
"TC015Quadrantic", "TC016I", "TC016II", "TC016II", "TC016Quadrantic", 
"TC017I", "TC017II", "TC017II"), CopyNumber = c(NA, 0L, NA, NA, 
NA, 1L, NA, NA, NA, 3L, NA), Study = c("TC015", NA, "TC015", 
"TC015", "TC016", NA, "TC016", "TC016", "TC017", NA, "TC017"), 
Sample = c("II", NA, "III", "Quadrantic", "I", NA, "II", 
"Quadrantic", "I", NA, "II"), HRE = c("neg", NA, "neg", "24", 
NA, NA, "neg", "6", NA, NA, "+")), .Names = c("TIMEdbMerge", 
"CopyNumber", "Study", "Sample", "HRE"), class = "data.frame", 
row.names = c(NA, -11L))