r-如何将不同的数据组合成一行

  • 本文关键字:一行 组合 数据 r row
  • 更新时间 :
  • 英文 :


我想合并数据图的两个记录"df";ID为";A";以及";B";其在一行中缺少一些数据(NA(;C";(目标(。我知道matrix可以做这种工作。但在数据帧中,没有可用的行号。

以下是我的数据。

df
ID    Y1    Y2    Y3    Y4    Y5   Y6
A     7     4     NA    NA    NA    NA
B     NA    NA     5    5     4     4 

目标:

ID  Y1    Y2    Y3    Y4    Y5    Y6
C   7     4     5      5     4     4

我们可以使用

df1 %>%
summarise(ID = 'C', across(where(is.numeric), na.omit))
#  ID Y1 Y2 Y3 Y4 Y5 Y6
#1  C  7  4  5  5  4  4

数据

df1 <- structure(list(ID = c("A", "B"), Y1 = c(7L, NA), Y2 = c(4L, NA
), Y3 = c(NA, 5L), Y4 = c(NA, 5L), Y5 = c(NA, 4L), Y6 = c(NA, 
4L)), class = "data.frame", row.names = c(NA, -2L))

我们可以使用janitor包中的adorn_totals

library(dplyr)
library(janitor)
df1 %>%
adorn_totals("row") %>% 
slice(3)

输出:

ID Y1 Y2 Y3 Y4 Y5 Y6
Total  7  4  5  5  4  4

这行吗:

as.data.frame(cbind(ID = 'C',t(apply(df[-1], 2, sum, na.rm = TRUE))))
ID Y1 Y2 Y3 Y4 Y5 Y6
1  C  7  4  5  5  4  4

一些基本R选项

  • colSums
> cbind(ID = "C", data.frame(t(colSums(df[-1], na.rm = TRUE))))
ID Y1 Y2 Y3 Y4 Y5 Y6
1  C  7  4  5  5  4  4
  • na.omit+list2DF
> list2DF(c(ID = "C", Map(na.omit, df[-1])))
ID Y1 Y2 Y3 Y4 Y5 Y6
1  C  7  4  5  5  4  4

如果在任何情况下,您都有一对想要合并到一起的行,您可以遵循以下简单策略

df <- structure(list(ID = c("A", "B", "C", "E"), Y1 = c(7L, NA, NA, 
7L), Y2 = c(4L, NA, 5L, NA), Y3 = c(NA, 5L, NA, 5L), Y4 = c(NA, 
                                              5L, NA, 5L), Y5 = c(NA, 4L, 14L, NA), Y6 = c(NA, 4L, 5L, NA)), row.names = c(NA, 
                                                                                                                                                                                                                                                                                                                            -4L), class = "data.frame")
df
#>   ID Y1 Y2 Y3 Y4 Y5 Y6
#> 1  A  7  4 NA NA NA NA
#> 2  B NA NA  5  5  4  4
#> 3  C NA  5 NA NA 14  5
#> 4  E  7 NA  5  5 NA NA
library(dplyr)
df %>% group_by(ID = (row_number()+1) %/% 2) %>%
summarise(across(everything(), sum, na.rm =T))
#> # A tibble: 2 x 7
#>      ID    Y1    Y2    Y3    Y4    Y5    Y6
#>   <dbl> <int> <int> <int> <int> <int> <int>
#> 1     1     7     4     5     5     4     4
#> 2     2     7     5     5     5    14     5

创建于2021-05-30由reprex包(v2.0.0(

相关内容

  • 没有找到相关文章

最新更新