此问题已被要求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
感谢
答案 0 :(得分:12)
首先将所有列转换为字符向量:
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
答案 1 :(得分:7)
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)允许您在数据的不同子集上运行相同的功能。