如何按R中的特定行拆分数据帧

zhiwei li

data看起来像这样:

data <- structure(list(A = c("1", "1", "1", "A", "10", "10", "B", "200"), B = c("2", "2", "2", "B", "20", "20", "C", "300"), C = c("3","3", "3", "C", "30", "30", "D", "400"), D = c("4", "4", "4", "D", "40", "40", NA, NA)), row.names = c(NA, -8L), class = c("tbl_df","tbl", "data.frame"))
data

> data
# A tibble: 8 x 4
  A     B     C     D    
  <chr> <chr> <chr> <chr>
1 1     2     3     4    
2 1     2     3     4    
3 1     2     3     4    
4 A     B     C     D    
5 10    20    30    40   
6 10    20    30    40   
7 B     C     D     NA   
8 200   300   400   NA    

这是错误的结合按行,我想分裂data成3个个子数据(d1d2d3)等这样的:

注意:在我的实际情况下d1d2d3有所不同nrow()我设置nrow(d1) = 3nrow(d2) = 2nrow(d3) = 1只是在这个例子简化问题。

d1 <- data.frame(A = rep(1,3),  B = rep(2,3),   C = rep(3,3),   D = rep(4,3))
d2 <- data.frame(A = rep(10,2), B = rep(20,2),  C = rep(30,2),  D = rep(40,2))
d3 <- data.frame(        B = 200, C = 300, D = 400)

> d1
  A B C D
1 1 2 3 4
2 1 2 3 4
3 1 2 3 4
> d2
   A  B  C  D
1 10 20 30 40
2 10 20 30 40
> d3
    B   C   D
1 200 300 400

然后我可以使用bind_rowsfrom正确地绑定它们dplyr

bind_rows(d1, d2, d3) %>% as_tibble()

# A tibble: 6 x 4
      A     B     C     D
  <dbl> <dbl> <dbl> <dbl>
1     1     2     3     4
2     1     2     3     4
3     1     2     3     4
4    10    20    30    40
5    10    20    30    40
6    NA   200   300   400

问题是,我对如何获得困扰d1d2d3data

任何帮助将不胜感激!

保罗

这是一个tidyverse解决方案。

process_df 获取数据框并设置列名称,然后删除第一行。

process_df <- function(df, ...) {
  df %>%
    set_names(slice(., 1)) %>%
    select(which(!is.na(names(.)))) %>%
    slice(-1)
}

添加仅包含列名称的标题行。

使用rowwise()c_across()按行获取所有列的值。使用它来识别哪些行是标题行。

group_map将对每个组应用函数,bind_rows并将结果组合在一起。

data %>%
  add_row(!!!set_names(names(.)), .before = 1) %>%
  rowwise() %>%
  mutate(
    group = all(is.na(c_across()) | c_across() %in% names(.))
  ) %>%
  ungroup() %>%
  mutate(group = cumsum(group)) %>%
  group_by(group) %>%
  group_map(process_df) %>%
  bind_rows()
#> # A tibble: 6 x 4
#>   A     B     C     D    
#>   <chr> <chr> <chr> <chr>
#> 1 1     2     3     4    
#> 2 1     2     3     4    
#> 3 1     2     3     4    
#> 4 10    20    30    40   
#> 5 10    20    30    40   
#> 6 NA    200   300   400 

!!!in的用法说明new_row

set_names(names(.))创建一个命名向量来表示我们要添加的行。但是,add_row不接受命名向量-它希望将值指定为参数。

这是一个简化的示例。

new_row <- c(speed = 1, dist = 2)

add_row 不接受命名向量,因此这行不通。

cars %>% add_row(new_row, .before = TRUE)
# (Error)

!!! 将解压缩向量作为函数的参数。

cars %>% add_row(!!!new_row, .before = TRUE)
# (Works)

!!! 以上本质上导致以下结果:

cars %>% add_row(speed = 1, dist = 2, .before = TRUE)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何按R中的特定行拆分数据帧

来自分类Dev

如何在熊猫中按行拆分数据帧或重新排序数据帧

来自分类Dev

在R中按比例拆分数据帧

来自分类Dev

在R中,如何按多个列中的因数拆分/细分数据帧?

来自分类Dev

在R中,如何按多个列中的因数拆分/细分数据帧?

来自分类Dev

如何在R中拆分数据帧

来自分类Dev

R按列中的新行拆分数据框

来自分类Dev

在 R 中拆分数据 - 简单的按行

来自分类Dev

R:按空间拆分数据帧行,删除通用元素,将不等长的列放在新的df中

来自分类Dev

在pySpark中按条件拆分数据帧

来自分类Dev

按每行中NA的数量拆分数据帧

来自分类Dev

R:按行拆分连接的数据帧

来自分类Dev

如何在R中按行对数据帧进行排序,然后将其拆分为多个数据帧?

来自分类Dev

按重复列拆分数据帧

来自分类Dev

按条件间隔拆分数据帧

来自分类Dev

在R中,拆分数据帧,以便子集数据帧包含先前数据帧的最后一行和后续数据帧的第一行

来自分类Dev

R:如何以编程方式遍历拆分数据帧

来自分类Dev

拆分数据帧以传递到R中的sprintf

来自分类Dev

R-按行位置拆分数据集并保存在不同文件中

来自分类Dev

在Apache Spark中拆分数据帧

来自分类Dev

如何在 Python 中的数据帧中按特定字符串长度拆分行?

来自分类Dev

在一列中按因子拆分/细分数据帧

来自分类Dev

如何按组拆分数据?

来自分类Dev

在R中的测试和训练集中拆分数据帧时如何保留所有类别的分类变量

来自分类Dev

在R中的测试和训练集中拆分数据帧时如何保留所有级别的分类变量

来自分类Dev

根据特定的累加值拆分数据帧

来自分类Dev

如何在R中每月拆分数据

来自分类Dev

如何在R中每月拆分数据

来自分类Dev

拆分数据帧 (csv)

Related 相关文章

  1. 1

    如何按R中的特定行拆分数据帧

  2. 2

    如何在熊猫中按行拆分数据帧或重新排序数据帧

  3. 3

    在R中按比例拆分数据帧

  4. 4

    在R中,如何按多个列中的因数拆分/细分数据帧?

  5. 5

    在R中,如何按多个列中的因数拆分/细分数据帧?

  6. 6

    如何在R中拆分数据帧

  7. 7

    R按列中的新行拆分数据框

  8. 8

    在 R 中拆分数据 - 简单的按行

  9. 9

    R:按空间拆分数据帧行,删除通用元素,将不等长的列放在新的df中

  10. 10

    在pySpark中按条件拆分数据帧

  11. 11

    按每行中NA的数量拆分数据帧

  12. 12

    R:按行拆分连接的数据帧

  13. 13

    如何在R中按行对数据帧进行排序,然后将其拆分为多个数据帧?

  14. 14

    按重复列拆分数据帧

  15. 15

    按条件间隔拆分数据帧

  16. 16

    在R中,拆分数据帧,以便子集数据帧包含先前数据帧的最后一行和后续数据帧的第一行

  17. 17

    R:如何以编程方式遍历拆分数据帧

  18. 18

    拆分数据帧以传递到R中的sprintf

  19. 19

    R-按行位置拆分数据集并保存在不同文件中

  20. 20

    在Apache Spark中拆分数据帧

  21. 21

    如何在 Python 中的数据帧中按特定字符串长度拆分行?

  22. 22

    在一列中按因子拆分/细分数据帧

  23. 23

    如何按组拆分数据?

  24. 24

    在R中的测试和训练集中拆分数据帧时如何保留所有类别的分类变量

  25. 25

    在R中的测试和训练集中拆分数据帧时如何保留所有级别的分类变量

  26. 26

    根据特定的累加值拆分数据帧

  27. 27

    如何在R中每月拆分数据

  28. 28

    如何在R中每月拆分数据

  29. 29

    拆分数据帧 (csv)

热门标签

归档