繁体   English   中英

使用 R 将同一行不同单元格中的值合并到一个单元格中

[英]Merge values in different cells of the same row into one cell using R

这是我的数据框的一部分。 我想添加一列并将不同单元格中的值合并到新添加的以逗号分隔的列中。

> df
                   X7     X8       X9     X10          X11     X12    X13    X14
1:                CA6   CORT     DFFA    ENO1         MTOR   PEX14    PGD PIK3CD
2:          ARHGEF10L   RCC2                                                    
3:             ADORA3   RHOC   ATP5F1  CAPZA1         CD53  CHI3L2  KCNA2  KCNA3
4:             NOTCH2 ADAM30                                                    
5:               BCL9   FMO5   PRKAB2  RNU1-4        CHD1L  RNU1-3 RNU1-2 RNU1-1
6:               ENSA   MCL1 ADAMTSL4 GOLPH3L ADAMTSL4-AS1 MIR4257   

这是预期的输出。

> df
                   X7     X8       X9     X10          X11     X12    X13    X14            X15
1:                CA6   CORT     DFFA    ENO1         MTOR   PEX14    PGD PIK3CD CA6,CORT,DFFA,ENO1,MTOR,PEX14,PGD,PIK3CD 
2:          ARHGEF10L   RCC2                                                     ARHGEF10L,RCC2
3:             ADORA3   RHOC   ATP5F1  CAPZA1         CD53  CHI3L2  KCNA2  KCNA3 ADORA3,RHOC,ATP5F1,CAPZA1,CD53,CHI3L2,KCNA2,KCNA3
4:             NOTCH2 ADAM30                                                     NOTCH2,ADAM30
5:               BCL9   FMO5   PRKAB2  RNU1-4        CHD1L  RNU1-3 RNU1-2 RNU1-1 ...
6:               ENSA   MCL1 ADAMTSL4 GOLPH3L ADAMTSL4-AS1 MIR4257               ENSA,MCL1,ADAMTSL4,GOLPH3L,ADAMTSL4-AS1,MIR4257

数据

structure(list(`X7` = c("CA6", "ARHGEF10L", "ADORA3", 
"NOTCH2", "BCL9", "ENSA"), X8 = c("CORT", "RCC2", "RHOC", "ADAM30", 
"FMO5", "MCL1"), X9 = c("DFFA", "", "ATP5F1", "", "PRKAB2", "ADAMTSL4"
), X10 = c("ENO1", "", "CAPZA1", "", "RNU1-4", "GOLPH3L"), X11 = c("MTOR", 
"", "CD53", "", "CHD1L", "ADAMTSL4-AS1"), X12 = c("PEX14", "", 
"CHI3L2", "", "RNU1-3", "MIR4257"), X13 = c("PGD", "", "KCNA2", 
"", "RNU1-2", ""), X14 = c("PIK3CD", "", "KCNA3", "", "RNU1-1", 
"")), row.names = c(NA, -6L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x00000229e9f61ef0>)

使用tidyr::unitetidyr::unite帮助。

library(dplyr)
library(tidyr)

df %>%
  rowwise %>%
  unite("x15", X7:X14, remove = FALSE, sep = ",", na.rm = TRUE)

  x15                                                X7        X8     X9       X10     X11          X12     X13    X14   
  <chr>                                              <chr>     <chr>  <chr>    <chr>   <chr>        <chr>   <chr>  <chr> 
1 CA6,CORT,DFFA,ENO1,MTOR,PEX14,PGD,PIK3CD           CA6       CORT   DFFA     ENO1    MTOR         PEX14   PGD    PIK3CD
2 ARHGEF10L,RCC2                                     ARHGEF10L RCC2   NA       NA      NA           NA      NA     NA    
3 ADORA3,RHOC,ATP5F1,CAPZA1,CD53,CHI3L2,KCNA2,KCNA3  ADORA3    RHOC   ATP5F1   CAPZA1  CD53         CHI3L2  KCNA2  KCNA3 
4 NOTCH2,ADAM30                                      NOTCH2    ADAM30 NA       NA      NA           NA      NA     NA    
5 BCL9,FMO5,PRKAB2,RNU1-4,CHD1L,RNU1-3,RNU1-2,RNU1-1 BCL9      FMO5   PRKAB2   RNU1-4  CHD1L        RNU1-3  RNU1-2 RNU1-1
6 ENSA,MCL1,ADAMTSL4,GOLPH3L,ADAMTSL4-AS1,MIR4257    ENSA      MCL1   ADAMTSL4 GOLPH3L ADAMTSL4-AS1 MIR4257 NA     NA    

添加

您可以使用everyting()而不是X7:X14

df %>%
  rowwise %>%
  unite("x15", everything(), remove = FALSE, sep = ",", na.rm = TRUE)

我无法让您的数据代码正常工作,但您可以使用rowwisepaste

library('dplyr')
df2 <- df %>% rowwise %>% mutate(new_col = paste(X7, X8, X9, X10, X11, X12, X13, X14, sep = ","))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM