R Вопрос - Как вы вставляете фиксированное количество пустых строк между каждой строкой? - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть набор данных с около 70 именами.Моя цель - создать фрейм данных с той же информацией, но пропускает фиксированное количество строк после каждого имени:

Имя # 1 |Название школы для имени № 1
Вставьте 11 строк
Имя № 1 |Название школы для имени № 1
Вставьте 11 строк
Имя № 1 |Название школы для имени № 1
Вставьте 10 строк
Имя № 1 |Название школы для имени № 1
имя № 2 |Название школы для имени № 2
Вставьте 11 строк
Имя № 2 |Название школы для имени № 2
Вставьте 11 строк
Имя № 2 |Название школы для имени № 2
Вставьте 10 строк
Имя № 2 |Название школы для имени № 2
.
.
.
Имя #n |Название школы для имени #n
Вставьте 11 строк
Имя #n |Название школы для имени #n
Вставьте 11 строк
Имя #n |Название школы для имени #n
Вставьте 10 строк
Имя #n |Название школы для имени #n


Если кто-то знает код R, который потребуется для его создания, пожалуйста, дайте мне знать.Кроме того, если вы знаете, как создать это на другом языке программирования, сообщите об этом псевдокодом!

1 Ответ

0 голосов
/ 21 сентября 2018

Понятия не имею, почему вы захотите это сделать, но я создал небольшой цикл, который справится с этим.Пакет Tibble имеет функцию add_row, которую можно использовать.

Я создал пример data.frame.В цикле измените число в выражении rep на 11 для ваших нужд.Также цикл считает в обратном направлении.Это связано с тем, что мы продолжаем добавлять x количество строк после значения.

library(tibble) 
df1 <- data.frame(name = LETTERS[1:4],
                  name2 = letters[1:4],
                  stringsAsFactors = FALSE)

for(i in nrow(df1):1){
  df1 <- add_row(df1, name = rep("", 2), name2 = rep("", 2), .after = i)
}
df1

   name name2
1     A     a
2            
3            
4     B     b
5            
6            
7     C     c
8            
9            
10    D     d
11           
12           

edit: добавлено решение @ Фрэнка из комментария

as.tibble(df1[sapply(1:nrow(df1), function(x) c(x, rep(NA_integer_, 2))), ])

# A tibble: 12 x 2
   name  name2
 * <chr> <chr>
 1 A     a    
 2 NA    NA   
 3 NA    NA   
 4 B     b    
 5 NA    NA   
 6 NA    NA   
 .....
 .....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...