split and common variables
Your request is still vague. Arun has given you one approach. This will tell you which names are found in pairs of places:
ndf <- length(names(dta.df.sp))
results <- vector("list")
for (i in 1:(ndf-1)) {
+ for (j in (i+1):ndf) {
+ pair <- paste(names(dta.df.sp)[i], names(dta.df.sp)[j])
+ results[[pair]] <- intersect(dta.df.sp[[i]]$name,
dta.df.sp[[j]]$name)
+ k <- k+1
+ }
+ }
results
$`GCKT IKLI`
character(0)
$`GCKT KLOI`
[1] "P_CK24" "P_CK29" "P_CK32"
$`GCKT PLRT`
[1] "P_CK33" "P_CK30"
$`GCKT POIV`
[1] "P_CK24" "P_CK33" "P_CK26"
$`IKLI KLOI`
[1] "P_CK25"
$`IKLI PLRT`
[1] "P_CK23" "P_CK25"
$`IKLI POIV`
[1] "P_CK23" "P_CK28" "P_CK31"
$`KLOI PLRT`
[1] "P_CK27" "P_CK25"
$`KLOI POIV`
[1] "P_CK24"
$`PLRT POIV`
[1] "P_CK23" "P_CK33"
-------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77840-4352
-----Original Message-----
From: arun [mailto:smartpink111 at yahoo.com]
Sent: Wednesday, June 5, 2013 10:37 AM
To: Nico Met
Cc: dcarlson at tamu.edu; R help
Subject: Re: [R] split and common variables
Hello,
May be this helps:
dta1<-do.call(data.frame,dta)
dta2<-dta1[complete.cases(dta1),]
dta2[,-3]<-lapply(dta2[,-3],as.character)
lstdta2<-split(dta2,dta2$place)
library(plyr)
#Some names are common in a few, but not in all the places. If you
are looking for names common in 2 places, 3, places, etc...
lstNew<-lapply(2:5,function(i){x1<-
combn(names(lstdta2),i);lapply(split(x1,col(x1)),function(x){x2<-pas
te(x,collapse="_");lst1<-lapply(lstdta2[x],`[`,-1);lst2<-join_all(ls
t1,by="name",type="inner");names(lst2)<-x2;
colnames(lst2)[-1]<-paste("value",1:(ncol(lst2)-1),sep="");lst2}) })
?lstNew1<-lapply(lstNew,function(x) x[lapply(x,nrow)!=0])
?lstNew2<-lstNew1[lapply(lstNew1,length)!=0]
?lstNew2[[1]][1:2]
#$`2`
#? GCKT_KLOI? value1?? value2
#1??? P_CK24? 6.0786? -1.2738
#2??? P_CK29? 1.2757 -13.7960
#3??? P_CK29? 1.2757 -34.8020
#4??? P_CK32 -8.1963 -11.1280
#5??? P_CK32 -8.1963 -35.9044
#
#$`3`
#? GCKT_PLRT? value1?? value2
#1??? P_CK33? 6.2826 -14.4522
#2??? P_CK33? 6.2826? -9.4303
#3??? P_CK30 15.3869 -23.9914
#4??? P_CK30 15.3869 -11.1103
A.K.
----- Original Message -----
From: Nico Met <nicomet80 at gmail.com>
To: dcarlson at tamu.edu
Cc: R help <r-help at r-project.org>
Sent: Wednesday, June 5, 2013 10:30 AM
Subject: Re: [R] split and common variables
Dear Dr. David,
Many thanks for your answer.
Now, if I want to see if there are common "name"in those "places" ,
how can
I do it? So, by common I mean, it might be compared with 2, 3, 4
.... all
of them. All possible combinations
Many thanks
regards
Nico
On Mon, Jun 3, 2013 at 5:20 PM, David Carlson <dcarlson at tamu.edu>
wrote:
It may be easier if you convert the list you provided to a data.frame:
dta.df <- data.frame(place=dta$place, name=dta$name,
value=dta$value)
dta.df
Note that the last line is blank so you probably want to remove
that
and remove the blank factor levels:
dta.df <- dta.df[-nrow(dta.df),] dta.df$place <- factor(dta.df$place) dta.df$name <- factor(dta.df$name) dta.df
Now you can make a list containing separate data.frames by place
dta.df.sp <- split(dta.df, dta.df$place) dta.df.sp
------------------------------------- David L Carlson Associate Professor of Anthropology Texas A&M University College Station, TX 77840-4352 -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Nico Met Sent: Monday, June 3, 2013 8:42 AM To: R help Subject: [R] split and common variables Dear all, I would like to split the data based on the "place" and then would like to see how many "names" were common in place with corresponding
"value"
. Please find a demo file. Thanks for your expert comment best Nico
dput(dta)
structure(list(place = structure(c(3L, 2L, 5L, 6L, 4L, 3L, 2L,
5L, 6L, 4L, 2L, 5L, 6L, 4L, 2L, 5L, 6L, 4L, 2L, 3L, 2L, 5L, 6L,
4L, 3L, 2L, 5L, 6L, 4L, 5L, 6L, 4L, 5L, 6L, 1L), .Label = c("",
"GCKT", "IKLI", "KLOI", "PLRT", "POIV"), class = "factor"), name =
structure
(c(2L,
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 12L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 12L, 12L, 1L), .Label = c("", "P_CK23", "P_CK24", "P_CK25",
"P_CK26", "P_CK27", "P_CK28", "P_CK29", "P_CK30", "P_CK31",
"P_CK32",
"P_CK33"), class = "factor"), value = c(5.9464, 6.0786, -4.5155,
15.0241, -38.1847, -0.0861, 1.2757, -23.9914, 9.5951, -11.128,
6.2826, 23.5218, 20.862, 3.1626, 6.242, -20.5348, -14.0126,
-13.796,
15.3869, -15.7409, -8.1963, -14.4522, 3.2117, -1.2738, 14.3556,
-12.5337, 20.4308, -3.3227, -34.802, -11.1103, -9.7146, -35.9044,
-9.4303, -28.1949, NA)), .Names = c("place", "name", "value"),
class
= "data .frame", row.names = c(NA, 35L))
? ? ? ? [[alternative HTML version deleted]]
______________________________________________ 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.
??? [[alternative HTML version deleted]] ______________________________________________ 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.