2013-11-28 3 views
4

Этот вопрос задал вопрос для Excel. How to automatically insert a blank row after a group of dataВставьте пустую строку после каждой группы данных.

Я хотел бы знать, если есть функция делает то же самое в R.

пример:

group <- c("a","b","b","c","c","c","d","d","d","d") 
xvalue <- c(16:25) 
yvalue <- c(1:10) 
df <- data.frame(cbind(group,xvalue,yvalue)) 
    group xvalue yvalue 
1  a  16  1 
2  b  17  2 
3  b  18  3 
4  c  19  4 
5  c  20  5 
6  c  21  6 
7  d  22  7 
8  d  23  8 
9  d  24  9 
10  d  25  10 

Я хотел бы иметь пустую строку после каждой группы, так что я могу проверить записи вручную

group xvalue yvalue 
1  a  16  1 
2 
3  b  17  2 
4  b  18  3 
5 
6  c  19  4 
7  c  20  5 
8  c  21  6 
9 
10  d  22  7 
11  d  23  8 
12  d  24  9 
12  d  25  10 

благодарит

ответ

8

Первый преобразовать все столбцы векторов символов:

df_new <- as.data.frame(lapply(df, as.character), stringsAsFactors = FALSE) 

Затем вы можете создать вывод, который вы ищете:

head(do.call(rbind, by(df_new, df$group, rbind, "")), -1) 

#  group xvalue yvalue 
# a.1  a  16  1 
# a.2      
# b.2  b  17  2 
# b.3  b  18  3 
# b.31      
# c.4  c  19  4 
# c.5  c  20  5 
# c.6  c  21  6 
# c.41      
# d.7  d  22  7 
# d.8  d  23  8 
# d.9  d  24  9 
# d.10  d  25  10 
+0

Благодарим вас за помощь – Rfan

5

Свен ответил именно то, что вы просили, но я думаю, что вы хотите сделать вообще плохую идею.

Если визуальное разделение это все, что вы надеетесь достичь, я бы рекомендовал только с помощью split:

split(df, df$group) 
# $a 
# group xvalue yvalue 
# 1  a  16  1 
# 
# $b 
# group xvalue yvalue 
# 2  b  17  2 
# 3  b  18  3 
# 
# $c 
# group xvalue yvalue 
# 4  c  19  4 
# 5  c  20  5 
# 6  c  21  6 
# 
# $d 
# group xvalue yvalue 
# 7  d  22  7 
# 8  d  23  8 
# 9  d  24  9 
# 10  d  25  10 

Это имеет преимущества (1) визуального разделения, (2) легко индексации, (3) без преобразования ваших данных и (4) позволяет вам выполнять одни и те же функции на разных подмножествах ваших данных.

+0

@ Анандо Я согласен с вами и благодарю вас за рассказ о функции «split». В этом случае у меня более 500 групп, и вам нужно вручную проверять их по отношению к оригинальному документу печати. Выбор заключается в том, чтобы экспортировать в excel, а затем запустить макрос excel для разделения или разделения на r и экспорта в excel. – Rfan

Смежные вопросы