[R] Using indexing to manipulate data
Jim Lemon
jim at bitwrit.com.au
Thu Mar 18 09:32:37 CET 2010
On 03/18/2010 04:05 PM, duncandonutz wrote:
>
> I know one of R's advantages is it's ability to index, eliminating the need
> for control loops to select relevant data, so I thought this problem would
> be easy. I can't crack it. I have looked through past postings, but
> nothing seems to match this problem
>
> I have a data set with one column of actors and one column of acts. I need
> a list that will give me a pair of actors in each row, provided they both
> participated in the act.
>
> Example:
>
> The Data looks like this:
> Jim A
> Bob A
> Bob C
> Larry D
> Alice C
> Tom F
> Tom D
> Tom A
> Alice B
> Nancy B
>
> I would like this:
> Jim Bob
> Jim Tom
> Bob Alice
> Larry Tom
> Alice Nancy
>
> The order doesn't matter (Jim-Bob vs. Bob-Jim), but each pairing should be
> counted only once.
Hi duncandonutz,
Try this:
actnames<-read.table("junkfunc/names.dat",stringsAsFactors=FALSE)
actorpairs<-NULL
for(act in unique(actnames$V2)) {
actors<-actnames$V1[actnames$V2 == act]
nactors<-length(actors)
if(nactors > 1) {
indices<-combn(nactors,2)
for(i in 1:dim(indices)[2])
actorpairs<-
rbind(actorpairs,c(actors[indices[1,i]],actors[indices[2,i]]))
}
}
actorpairs
Jim
More information about the R-help
mailing list