Skip to content

How to split two levels several times?

4 messages · dennis1991 at gmx.net, Rui Barradas, arun

#
Hi,

I have a small problem with the function split() and would appreciate your help.

I have a table called ?XXX? with 2 columns and 49 rows. The 49 rows belong to 8 different levels (electrode1, ...,electrode8). I want to split the table always at the row where ?electrode1? starts again so that I can export 7  individual dataframes (numbered ?dataframe1? to ?dataframe7?) which contain always electrode1 as first level (always three rows) with the varying number of rows for electrodes2-8 below.
I tried the split function with various setups:

t <- as.factor(XXX$electrode)

dataframeX <- split(XXX, f=(levels=t))

But this doesn?t work. Could you please help. Thank you! Dennis


This is the table "XXX"

electrode	length

electrode1	5.7
electrode1	6.3
electrode1	6.2
electrode2	11.4
electrode2	9.7
electrode1	5.7
electrode1	6.3
electrode1	6.2
electrode3	14.2
electrode3	14.8
electrode3	12.6
electrode1	5.7
electrode1	6.3
electrode1	6.2
electrode4	17.0
electrode4	16.3
electrode4	17.8
electrode4	18.3
electrode4	16.9
electrode4	18.5
electrode1	....
....		....
electrode5	....
....		....
electrode1	....
electrode6	....
electrode1	....
electrode7	....
electrode1	....
electrode8	....
#
Hello,

Try the following.


idx <- cumsum(c(TRUE, diff(dat$electrode == "electrode1") > 0))
split(dat, idx)


Hope this helps,

Rui Barradas

Em 22-07-2013 15:09, dennis1991 at gmx.net escreveu:
#
Hello,

Sorry, I've just realized that your data frame is named 'XXX', not 
'dat'. Change that and the rest should work:


idx <- cumsum(c(TRUE, diff(XXX$electrode == "electrode1") > 0))
split(XXX, idx)


Rui Barradas

Em 22-07-2013 16:47, Rui Barradas escreveu:
#
May be this helps:


?split(XXX,cumsum(c(TRUE,diff(as.numeric(XXX$electrode))<0)))
A.K.



----- Original Message -----
From: "dennis1991 at gmx.net" <dennis1991 at gmx.net>
To: r-help at r-project.org
Cc: 
Sent: Monday, July 22, 2013 10:09 AM
Subject: [R] How to split two levels several times?

Hi,

I have a small problem with the function split() and would appreciate your help.

I have a table called ?XXX? with 2 columns and 49 rows. The 49 rows belong to 8 different levels (electrode1, ...,electrode8). I want to split the table always at the row where ?electrode1? starts again so that I can export 7? individual dataframes (numbered ?dataframe1? to ?dataframe7?) which contain always electrode1 as first level (always three rows) with the varying number of rows for electrodes2-8 below.
I tried the split function with various setups:

t <- as.factor(XXX$electrode)

dataframeX <- split(XXX, f=(levels=t))

But this doesn?t work. Could you please help. Thank you! Dennis


This is the table "XXX"

electrode??? length

electrode1??? 5.7
electrode1??? 6.3
electrode1??? 6.2
electrode2??? 11.4
electrode2??? 9.7
electrode1??? 5.7
electrode1??? 6.3
electrode1??? 6.2
electrode3??? 14.2
electrode3??? 14.8
electrode3??? 12.6
electrode1??? 5.7
electrode1??? 6.3
electrode1??? 6.2
electrode4??? 17.0
electrode4??? 16.3
electrode4??? 17.8
electrode4??? 18.3
electrode4??? 16.9
electrode4??? 18.5
electrode1??? ....
....??? ??? ....
electrode5??? ....
....??? ??? ....
electrode1??? ....
electrode6??? ....
electrode1??? ....
electrode7??? ....
electrode1??? ....
electrode8??? ....

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.