Добавить пустые строки в кадре данных - PullRequest
0 голосов
/ 12 марта 2019

Я ищу код, который мог бы вставить переменную №.пустых строк (4-6) после каждой строки с наблюдениями (в настоящее время в таблице 5 строк), чтобы я мог заполнять / добавлять наблюдения к пустым строкам.Я наткнулся на следующий код:

library(dplyr)

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

Однако замена 2 на 4 в «каждом» возвращает сообщение об ошибке,

«Ошибка: столбец ID должен иметь длину10 (количество строк) или один, а не 20 "

Любой совет, как обойти, чтобы обойти номер.2

1 Ответ

0 голосов
/ 12 марта 2019

Вот один метод, который работает на базе R, при условии, что взятие NA-го кадра возвращает строку, заполненную NA значениями.

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 с другим векторным аргументом:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...