ile veri gruplamak için split
işlevini kullanma konusunda bir sorum var.Bir veri çerçevesini faktöre göre gruplandırmak için bölünmüş işlevi kullanma, büyük veri çerçeveleri için seçenekler
İki sütunlu snps ve gen içeren bir veri çerçevem var. Snps bir faktördür, gene
bir karakter vektörüdür. Her snp'ye eşlenen bir gen listesi görebilmem için, snp faktörü ile genleri gruplamak istiyorum. Bazı snps, birden fazla gene, örneğin rs10000226, 345274 genine ve 5783 genine eşleşebilir ve genler, birçok kez meydana gelir.
Bunu yapmak için, her bir snp eşlemesinin oluşturduğu genlerin bir listesini yapmak için bölme işlevini kullandım. ve R çöker sonra df.2.rda` yüklemeye çalışıyor iken -
snps<-c("rs10000185", "rs1000022", "rs10000226", "rs10000226")
gene<-c("5783", "171425", "345274", "5783")
df<-data.frame(snps, gene) # snps is a factor
df$gene<-as.character(df$gene)
splitted=split(df, df$gene, drop=T) # group by gene
snpnames=unique(df$snps)
df.2<-lapply(splitted, function(x) { x["snps"] <- NULL; x }) # remove the snp column
names(df.2)=snpnames # rename the list elements by snp
df.2 = sapply(df.2, function(x) list(as.character(x$gene)))
save(df.2, file="df.2.rda")
Ancak bu benim tam dataframe için (363422 satır, 281.370 benzersiz SNP, 20888 benzersiz genler muhtemelen onun büyüklüğü nedeniyle) etkin değildir.
Bunu yapmanın alternatif yolları için herhangi bir öneri çok takdir edilecektir!
Neden "data.table" işlevini kullanmıyorsunuz ve sadece "snps" sütunu kullanmıyorsunuz. Sonra farklı değerleri kolayca inceleyebilirsiniz. – A5C1D2H2I1M1N2O1R2T1
'split', her snp eşlemesinin bir listesini oluşturur. Aksini yapar: genlere göre gruplar ('split' için ikinci argüman). – Frank
Bölünme sonrası bununla ne yapmayı planlıyorsunuz? Çıktınız nedir * gerçekten * ihtiyacınız var? – MrFlick