输出我在数据框中获得的内容
col1 col2 col3 col4
abc 25 35
abc asd 25 45
def 15 36
erf 23 69
erf asd 25 36
erf dfg 85 78
像这样转换
1. col1 col2 col3 col4
2.
3. abc 25 35
4. abc asd 25 45
5. abc def 15 36
6.
7. def erf 23 69
8.
8. erf asd 25 36
9. erf dfg 85 78
10 erf fgh 78 89
我需要在2 6和8处进行空白观察。有没有选择?
答案 0 :(得分:2)
如果我们假设col1
和col2
属于character
类,那么快速解决方案就是
res <- do.call(rbind, lapply(split(df, df$col1), function(x) rbind("", x)))
row.names(res) <- NULL
res
# col1 col2 col3 col4
# 1
# 2 abc 25 35
# 3 abc asd 25 45
# 4
# 5 def 15 36
# 6
# 7 erf 23 69
# 8 erf asd 25 36
# 9 erf dfg 85 78
或使用data.table
包(不必假设character
类)
library(data.table)
setDT(df)[df[, c(NA, .I), by = col1]$V1]
# col1 col2 col3 col4
# 1: NA NA NA NA
# 2: abc 25 35
# 3: abc asd 25 45
# 4: NA NA NA NA
# 5: def 15 36
# 6: NA NA NA NA
# 7: erf 23 69
# 8: erf asd 25 36
# 9: erf dfg 85 78