[英]Add a blank row after each unique value of a column in a dataframe in R
我想知道是否可以在下面的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"
您可以使用group_split
按組將數據拆分為數據框列表。 然后在每個列表元素上 map 一個 function 並使用map_dfr
將它們的 output 堆疊回數據幀中。
library(dplyr)
library(tibble)
library(purrr)
data %>%
group_split(study) %>%
map_dfr(~ add_row(.x, .after = Inf))
Output
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
這是一個基本的 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
使用 tibble 你可以使用add_row
data <- data.frame(study=c(rep(1,2),2:3), year=c(rep(2001,2),2002:2003))
library(tibble)
data |>
add_row(study = NA, year = NA, .before = 3)|>
add_row(study = NA, year = NA, .after = 4)
#> study year
#> 1 1 2001
#> 2 1 2001
#> 3 NA NA
#> 4 2 2002
#> 5 NA NA
#> 6 3 2003
由代表 package (v2.0.1) 於 2021 年 12 月 8 日創建
按等於 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.