首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在dataframe中添加空白行

在dataframe中添加空白行
EN

Stack Overflow用户
提问于 2019-03-12 04:44:08
回答 1查看 135关注 0票数 0

我正在寻找一个可以插入变量no的代码。对于空行(4-6),在每一行后面都有观察(当前表中有5行),这样我就可以向空白行填充/添加观察。我偶然发现了以下代码:

代码语言:javascript
复制
library(dplyr)

df %>% 
  split(df$id) %>% 
  Map(rbind, ., NA) %>% 
  do.call(rbind, .) %>%
  mutate(id = rep(df$id, each = 2))

但是,将“每个”中的2替换为4将返回一个错误消息,

错误:列ID必须长度为10 (行数)或一列,而不是20

有什么建议吗?如何绕开第二关?

EN

回答 1

Stack Overflow用户

发布于 2019-03-12 05:13:20

下面是一种在基本R上工作的技术,前提是获取帧的NA第四行返回填充了NA值的行。

代码语言:javascript
复制
dat <- head(iris)
unlist(lapply(seq_len(nrow(dat)), c, rep(NA, 2)))
#  [1]  1 NA NA  2 NA NA  3 NA NA  4 NA NA  5 NA NA  6 NA NA
dat[ unlist(lapply(seq_len(nrow(dat)), c, rep(NA, 2))), ]
#       Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1              5.1         3.5          1.4         0.2  setosa
# NA              NA          NA           NA          NA    <NA>
# NA.1            NA          NA           NA          NA    <NA>
# 2              4.9         3.0          1.4         0.2  setosa
# NA.2            NA          NA           NA          NA    <NA>
# NA.3            NA          NA           NA          NA    <NA>
# 3              4.7         3.2          1.3         0.2  setosa
# NA.4            NA          NA           NA          NA    <NA>
# NA.5            NA          NA           NA          NA    <NA>
# 4              4.6         3.1          1.5         0.2  setosa
# NA.6            NA          NA           NA          NA    <NA>
# NA.7            NA          NA           NA          NA    <NA>
# 5              5.0         3.6          1.4         0.2  setosa
# NA.8            NA          NA           NA          NA    <NA>
# NA.9            NA          NA           NA          NA    <NA>
# 6              5.4         3.9          1.7         0.4  setosa
# NA.10           NA          NA           NA          NA    <NA>
# NA.11           NA          NA           NA          NA    <NA>

(行名可能会分散注意力,但它们很容易被移除和/或更改/更新。)

这里的行数固定在每一行实际观察的2行。如果需要更改它,请使用另一个向量参数从sapply切换到mapply/unlist

代码语言:javascript
复制
unlist(mapply(function(a,b) c(a, rep(NA, b)), seq_len(nrow(dat)), c(2,1,2,1,2,1)))
#  [1]  1 NA NA  2 NA  3 NA NA  4 NA  5 NA NA  6 NA
dat[ unlist(mapply(function(a,b) c(a, rep(NA, b)), seq_len(nrow(dat)), c(2,1,2,1,2,1))), ]
#      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1             5.1         3.5          1.4         0.2  setosa
# NA             NA          NA           NA          NA    <NA>
# NA.1           NA          NA           NA          NA    <NA>
# 2             4.9         3.0          1.4         0.2  setosa
# NA.2           NA          NA           NA          NA    <NA>
# 3             4.7         3.2          1.3         0.2  setosa
# NA.3           NA          NA           NA          NA    <NA>
# NA.4           NA          NA           NA          NA    <NA>
# 4             4.6         3.1          1.5         0.2  setosa
# NA.5           NA          NA           NA          NA    <NA>
# 5             5.0         3.6          1.4         0.2  setosa
# NA.6           NA          NA           NA          NA    <NA>
# NA.7           NA          NA           NA          NA    <NA>
# 6             5.4         3.9          1.7         0.4  setosa
# NA.8           NA          NA           NA          NA    <NA>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55114328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档