【问题标题】:Insert a blank row after each group of data在每组数据后插入一个空白行
【发布时间】:2013-11-28 07:48:42
【问题描述】:

这个问题已经被问到了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

谢谢

【问题讨论】:

    标签: r


    【解决方案1】:

    首先将所有列转换为字符向量:

    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
    

    【讨论】:

    • @sven:为什么要将所有变量都转换为文本?也可以用 tidyverse 解决?
    • @David 你想如何表示没有文字的“空行”?
    • @sven。抱歉回复晚了。对于每个组,我想插入一个空白行并用例如组的平均值填充值。
    • @David 当然,您将值插入“空白”行,但这不是 OP 正在寻找的解决方案。
    • @svend。好的...我有一个关于编码的新问题,你能看看吗? link
    【解决方案2】:

    Sven 已经准确回答了您的要求,但我认为您想要做的通常是个坏主意。

    如果您只希望实现视觉分离,我建议您只使用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) 允许您在数据的不同子集上运行相同的函数。

    【讨论】:

    • @Anando 我同意你的看法,感谢你告诉我split 功能。在这种情况下,我有 500 多个组,需要根据原始打印文档手动检查每个组。选择是导出到excel,然后运行excel宏在r中拆分或者拆分,然后导出到excel。
    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多