【问题标题】:Add a blank row after each unique value of a column in a dataframe in R在 R 中的数据框中的列的每个唯一值之后添加一个空白行
【发布时间】:2022-01-13 17:42:28
【问题描述】:

我想知道是否可以在下面我的data 中的每个唯一值 study 之后添加一个空白行?

下面是我的Desired_output

请注意,这是一个玩具数据。非常感谢功能性答案。

data <- data.frame(study=c(rep(1,2),2:3), year=c(rep(2001,2),2002:2003))

Desired_output =
" study year
1     1 2001
2     1 2001
             # <- Blank row
3     2 2002
             # <- Blank row
4     3 2003"

【问题讨论】:

  • 见这里:stackoverflow.com/questions/62007509/…>

标签: r dataframe function dplyr tidyverse


【解决方案1】:

按等于 study 的新列分组,然后使用 group_modify 在每个组的末尾添加一行。最后删除 study2 和最后一行。

library(dplyr)

data %>%
 group_by(study2 = study) %>%
 group_modify(~ add_row(.)) %>%
 ungroup %>%
 select(-study2) %>%
 slice(-n())

给予:

# A tibble: 7 x 2
  study  year
  <dbl> <dbl>
1     1  2001
2     1  2001
3    NA    NA
4     2  2002
5    NA    NA
6     3  2003

【讨论】:

    【解决方案2】:

    这是一个基本的 R 解决方案:

    data_new <- as.data.frame(lapply(data, as.character), stringsAsFactors = FALSE)
    head(do.call(rbind, by(data_new, data$study, rbind, "")), -1)
    
        study year
    1.1     1 2001
    1.2     1 2001
    1.3           
    2.3     2 2002
    2.2           
    3.4     3 2003
    

    【讨论】:

    • head(do.call(rbind, by(data, data$study, rbind, "")), -1) 似乎没有第一行就足够了。
    • 感谢您的建议!
    【解决方案3】:

    您可以使用group_split 将数据按组拆分为数据框列表。然后在每个列表元素上映射一个函数,并使用map_dfr 将它们的输出堆叠回一个数据框。

    library(dplyr)
    library(tibble)
    library(purrr)
    
    data %>% 
      group_split(study) %>% 
      map_dfr(~ add_row(.x, .after = Inf))
    

    输出

      study  year
      <dbl> <dbl>
    1     1  2001
    2     1  2001
    3    NA    NA
    4     2  2002
    5    NA    NA
    6     3  2003
    7    NA    NA
    

    【讨论】:

    • 超级有趣!只是好奇,如果我们想要添加两个 NA 行而不是一个 NA 行,应该改变什么?
    • 然后我将用map_dfr(~ .x[1:(nrow(.x) + 2),]) 替换最后一行。然后你也不需要加载tibble 包。
    • 非常感谢。有趣!
    猜你喜欢
    • 2021-04-17
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2023-02-10
    • 2019-06-18
    相关资源
    最近更新 更多