Split a data.frame
Hi!
How about this:
--- snip --
for (i in 1:(length(split_str)-1)) {
????assign(paste("DF",i,sep=""),DF[
c((which(DF$name==split_str[i])+1):(which(DF$name==split_str[i+1])-1)),
])
}
--- snip ---
'assign' creates for each subset a new data.frame DFn, where n ist a
count (1,2,...).
But note: if your DF has duplicates in 'name' (e.g. two rows with 'a'
in 'DF$name'), my solution will use the first occurrence only (and this
for both start and for end).
HTH,
Kimmo
2018-05-19 kello 16:37 +0530, Christofer Bogaso wrote:
Hi,
I am struggling to split a data.frame as will below scheme :
DF = data.frame(name = c('a', 'v', 'c'), val = 0); DF
split_str = c('a', 'c')
Now, for each element in split_str, R should find which row of DF
contains
that element, and return DF with all rows starting from next row of
the
corresponding element and ending with the preceding value of the next
element.
So in my case, I should see 2 data.frames
1st data-frame with name = 'v' (i.e. 2nd row of DF)
2nd data.frame with number_of_rows as 0 (as there is no row left
after 'c')
Similarly if split_str = c('v'') then, my 2 data.frames will be
1st data.frame with name = 'a'
2nd data.frame with name = 'c'
Any idea how to efficiently implement above scheme would be highly
appreciated. I tried with split() function, however, it is not giving
the
right answer.
Thanks,
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-gui de.html and provide commented, minimal, self-contained, reproducible code.