2015-12-23 12 views
6

Yüzlerce sütun içeren dd2 veri çerçevem ​​var ve yapmam gereken şey, tüm bu sütun değerlerini NA değerlerini dahil etmeden yapıştırmaktır. BuSayısız sütun değerini bir arada yapıştırırken NA değerlerini nasıl aktarabilirsiniz?

apply(a, 1, paste, collapse=",") 

gibi bir şey yaparsanız aslında "NA" dize olarak NA s içerir. Bundan kaçınmak istiyorum. Aşağıda gösterildiği gibi de yapabilirdim, ancak bu sonuç elde etmek için her bir sütun için bir seferde çalışmamı beklerdi.

result <- cbind( 
    dd2, 
    combination = paste(dd2[,2], replace(dd2[,3], is.na(dd2[,3]), ""), sep = ",") 
) 

Bunu yapmak için etkili bir yol var mı? İşte örnek veridir:

dd2 <- structure(c("A", "B", "C", "D", "E", "AK2", "HFM1", NA, "TRR", 
"RTT", NA, "PPT", "TRR", "RTT", NA, "PPT", NA, NA, "GGT", NA), .Dim = c(5L, 
4L), .Dimnames = list(NULL, c("sample_id", "plant", "animal", 
"more"))) 
+0

Sizin örnek veriler 'data.frame' değildir. "Dd2" ile, ilk hariç tüm sütunları birleştirmeye mi çalışıyorsunuz? – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto Herhangi bir NA'yı ihmal ederek birlikte sütun değerlerini yapıştırmak istiyorum. Örneğin, dd2 [, wanted.columns] 'ı yapıştırmak istiyorum. – MAPK

+1

Belki de böyle bir şey işe yarayacak: melt (as.data.table (dd2), measure.vars = c ("bitki", "hayvan"), na.rm = TRUE) [, toString (value), tarafından =. (sample_id, daha fazla)] '. – A5C1D2H2I1M1N2O1R2T1

cevap

6

Daha sonra yapıştırın değerlerini çıkarmanıza na.omit() deneyebilirsiniz. Ayrıca, paste(..., collapse = ", ") temel olarak toString() kullanabilirsiniz. Eğer kullandığınız belirli sütunları varsa

apply(dd2, 1, function(x) toString(na.omit(x))) 
# [1] "A, AK2, PPT"  "B, HFM1, PPT"  "C, TRR"   
# [4] "D, TRR, RTT, GGT" "E, RTT" 

sonra

apply(dd2[, cols], 1, function(x) toString(na.omit(x))) 
İlgili konular