我有一个大的数据框(200000),我需要添加一列进行分组,这些组是由具有特定值的行分隔的,例如:
s<-"A B C
1 2 1
2 22 3
0 0 -1
2 12 2
0 0 -1
20 2 5
1 3 1
0 2 2"
d<-read.delim(textConnection(s),sep=" ",header=T)
C==-1是每个组的分界点,我需要的结果是3个组:
require(dplyr)
这里我找到了分隔组的行。
mutate(d,rn=row_number()) %>% filter(C==-1)
然后我可以构建我所需的数据框
bind_rows(slice(d, 1:2) %>% mutate(grp=1),slice(d,4) %>%mutate(grp=2), slice(d,6:n()) %>% mutate(grp=3))
如何避免硬编码换行符?
transform(d, group=cumsum(C==-1) + 1)[d$C != -1,]
。翻译完成,没有其他内容返回。 - thelatemail