[R] Calculate interaction for a big dataframe

2013-07-22 Thread Arnaud Michel

Hi

To calculate the value of the interaction between factors of a dataframe 
df, does exist any function which could replace the function when the 
dataframe df has the numbers of rows of df is large (~55000) and also 
the numbers of combinaison of the three factors is large. The calcul abort.

The function to calculate the interaction is :
as.numeric(interaction(df [,c(1:3)],drop=TRUE))

To complete the question and to calculate interaction beetween 3 factors 
f1, f2, f3, does it possible to calculate first f12 = interaction 
(f1,f2) and after calculate interaction (f12, f3).

It seems to me that yes.

Thanks for your help




--
Michel ARNAUD
Chargé de mission auprès du DRH
DGDRD-Drh - TA 174/04
Av Agropolis 34398 Montpellier cedex 5
tel : 04.67.61.75.38
fax : 04.67.61.57.87
port: 06.47.43.55.31

__
R-help@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.


Re: [R] Calculate interaction for a big dataframe

2013-07-22 Thread PIKAL Petr
Hi

you maybe could use paste

 f1-sample(letters[1:3], 10, replace=T)
 f2-sample(letters[4:7], 10, replace=T)
 f3-sample(letters[9:11], 10, replace=T)
 interaction(f1, f2, f3, drop=T)
 [1] c.e.j b.e.j a.e.j c.g.i a.f.j b.g.k a.e.i a.e.k a.d.j b.e.j
Levels: a.e.i c.g.i a.d.j a.e.j b.e.j c.e.j a.f.j a.e.k b.g.k
 paste(f1, f2, f3, sep=.)
 [1] c.e.j b.e.j a.e.j c.g.i a.f.j b.g.k a.e.i a.e.k a.d.j
[10] b.e.j

The difference is that interaction gives you directly factor, paste gives you 
character vector, but it may be convenient too for your purpose.

Regards
Petr


 -Original Message-
 From: r-help-boun...@r-project.org [mailto:r-help-bounces@r-
 project.org] On Behalf Of Arnaud Michel
 Sent: Monday, July 22, 2013 10:57 AM
 To: R help
 Subject: [R] Calculate interaction for a big dataframe
 
 Hi
 
 To calculate the value of the interaction between factors of a
 dataframe df, does exist any function which could replace the function
 when the dataframe df has the numbers of rows of df is large (~55000)
 and also the numbers of combinaison of the three factors is large. The
 calcul abort.
 The function to calculate the interaction is :
 as.numeric(interaction(df [,c(1:3)],drop=TRUE))
 
 To complete the question and to calculate interaction beetween 3
 factors f1, f2, f3, does it possible to calculate first f12 =
 interaction
 (f1,f2) and after calculate interaction (f12, f3).
 It seems to me that yes.
 
 Thanks for your help
 
 
 
 
 --
 Michel ARNAUD
 Chargé de mission auprès du DRH
 DGDRD-Drh - TA 174/04
 Av Agropolis 34398 Montpellier cedex 5
 tel : 04.67.61.75.38
 fax : 04.67.61.57.87
 port: 06.47.43.55.31
 
 __
 R-help@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.

__
R-help@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.


Re: [R] Calculate interaction for a big dataframe

2013-07-22 Thread arun
Hi,
You could try:
 cumsum(c(1,abs(diff(as.numeric(factor(v1))
# [1] 1 1 1 2 2 3 3 3 3 4
A.K.




- Original Message -
From: Arnaud Michel michel.arn...@cirad.fr
To: PIKAL Petr petr.pi...@precheza.cz
Cc: R help r-help@r-project.org
Sent: Monday, July 22, 2013 11:41 AM
Subject: Re: [R] Calculate interaction for a big dataframe

Thank you Petr
paste is better than interaction for long vectors
But now a new problem/question is appeared.
Now, I would like transform the vector
v1 - c(
4162.France, 4162.France, 4162.France,
4162.Mali, 4162.Mali,
4162.France, 4162.France, 4162.France, 4162.France,
4162.Mali)
into a vector V2 with the same length but with number which are creasing
v2 - c(1,     1,    1,
2, 2,
3, 3,3,3,
4))

Any idea (function) ?
Regards


Le 22/07/2013 14:45, PIKAL Petr a écrit :
 Hi

 you maybe could use paste

 f1-sample(letters[1:3], 10, replace=T)
 f2-sample(letters[4:7], 10, replace=T)
 f3-sample(letters[9:11], 10, replace=T)
 interaction(f1, f2, f3, drop=T)
   [1] c.e.j b.e.j a.e.j c.g.i a.f.j b.g.k a.e.i a.e.k a.d.j b.e.j
 Levels: a.e.i c.g.i a.d.j a.e.j b.e.j c.e.j a.f.j a.e.k b.g.k
 paste(f1, f2, f3, sep=.)
   [1] c.e.j b.e.j a.e.j c.g.i a.f.j b.g.k a.e.i a.e.k a.d.j
 [10] b.e.j

 The difference is that interaction gives you directly factor, paste gives you 
 character vector, but it may be convenient too for your purpose.

 Regards
 Petr


 -Original Message-
 From: r-help-boun...@r-project.org [mailto:r-help-bounces@r-
 project.org] On Behalf Of Arnaud Michel
 Sent: Monday, July 22, 2013 10:57 AM
 To: R help
 Subject: [R] Calculate interaction for a big dataframe

 Hi

 To calculate the value of the interaction between factors of a
 dataframe df, does exist any function which could replace the function
 when the dataframe df has the numbers of rows of df is large (~55000)
 and also the numbers of combinaison of the three factors is large. The
 calcul abort.
 The function to calculate the interaction is :
 as.numeric(interaction(df [,c(1:3)],drop=TRUE))

 To complete the question and to calculate interaction beetween 3
 factors f1, f2, f3, does it possible to calculate first f12 =
 interaction
 (f1,f2) and after calculate interaction (f12, f3).
 It seems to me that yes.

 Thanks for your help




 --
 Michel ARNAUD
 Chargé de mission auprès du DRH
 DGDRD-Drh - TA 174/04
 Av Agropolis 34398 Montpellier cedex 5
 tel : 04.67.61.75.38
 fax : 04.67.61.57.87
 port: 06.47.43.55.31

 __
 R-help@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.

-- 
Michel ARNAUD
Chargé de mission auprès du DRH
DGDRD-Drh - TA 174/04
Av Agropolis 34398 Montpellier cedex 5
tel : 04.67.61.75.38
fax : 04.67.61.57.87
port: 06.47.43.55.31

__
R-help@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.

__
R-help@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.


Re: [R] Calculate interaction for a big dataframe

2013-07-22 Thread Arnaud Michel

Thank you Petr
paste is better than interaction for long vectors
But now a new problem/question is appeared.
Now, I would like transform the vector
v1 - c(
4162.France, 4162.France, 4162.France,
4162.Mali, 4162.Mali,
4162.France, 4162.France, 4162.France, 4162.France,
4162.Mali)
into a vector V2 with the same length but with number which are creasing
v2 - c(1, 1,1,
2, 2,
3, 3,3,3,
4))

Any idea (function) ?
Regards


Le 22/07/2013 14:45, PIKAL Petr a écrit :

Hi

you maybe could use paste


f1-sample(letters[1:3], 10, replace=T)
f2-sample(letters[4:7], 10, replace=T)
f3-sample(letters[9:11], 10, replace=T)
interaction(f1, f2, f3, drop=T)

  [1] c.e.j b.e.j a.e.j c.g.i a.f.j b.g.k a.e.i a.e.k a.d.j b.e.j
Levels: a.e.i c.g.i a.d.j a.e.j b.e.j c.e.j a.f.j a.e.k b.g.k

paste(f1, f2, f3, sep=.)

  [1] c.e.j b.e.j a.e.j c.g.i a.f.j b.g.k a.e.i a.e.k a.d.j
[10] b.e.j

The difference is that interaction gives you directly factor, paste gives you 
character vector, but it may be convenient too for your purpose.

Regards
Petr



-Original Message-
From: r-help-boun...@r-project.org [mailto:r-help-bounces@r-
project.org] On Behalf Of Arnaud Michel
Sent: Monday, July 22, 2013 10:57 AM
To: R help
Subject: [R] Calculate interaction for a big dataframe

Hi

To calculate the value of the interaction between factors of a
dataframe df, does exist any function which could replace the function
when the dataframe df has the numbers of rows of df is large (~55000)
and also the numbers of combinaison of the three factors is large. The
calcul abort.
The function to calculate the interaction is :
as.numeric(interaction(df [,c(1:3)],drop=TRUE))

To complete the question and to calculate interaction beetween 3
factors f1, f2, f3, does it possible to calculate first f12 =
interaction
(f1,f2) and after calculate interaction (f12, f3).
It seems to me that yes.

Thanks for your help




--
Michel ARNAUD
Chargé de mission auprès du DRH
DGDRD-Drh - TA 174/04
Av Agropolis 34398 Montpellier cedex 5
tel : 04.67.61.75.38
fax : 04.67.61.57.87
port: 06.47.43.55.31

__
R-help@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.


--
Michel ARNAUD
Chargé de mission auprès du DRH
DGDRD-Drh - TA 174/04
Av Agropolis 34398 Montpellier cedex 5
tel : 04.67.61.75.38
fax : 04.67.61.57.87
port: 06.47.43.55.31

__
R-help@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.