2016-04-08 25 views
0

R için yeniyim ve burada verilerimi yapılandırmak için biraz yardıma ihtiyacım var.R: Başka bir veri çerçevesinden karşılık gelen değeri al

Ben iki veri setleri: Bunlardan biri büyük ve görünen konular veri kümesi içindeki uzun biçimidir böyle biraz:

long.format <- data.frame(subject.no = c(1, 1, 1, 1, 2, 2, 2, 2), condition = c("prime", "prime", "prime", "prime", "control", "control","control","control"), response = c(1,1,1,0,1,1,1,0)) 

    subject.no condition response 
>1   1  prime  1 
>2   1  prime  1 
>3   1  prime  1 
>4   1  prime  0 
>5   2 control  1 
>6   2 control  1 
>7   2 control  1 
>8   2 control  0 

diğeri geniş format ve görünüm zaten Bu

wide.format <- data.frame(subject = c(1, 2), age = c(26,27), gender = c("m","f")) 

    subject age gender 
>1  1 26  m 
>2  2 27  f 

gibi şimdi yapmak istediğim tek şey çapında veri çerçevesindeki karşılık gelen konuya uzun formatlı veri çerçevesinden bir ekleyerek "durum" değeri elde etmektir (sadece bu! ve) Geniş veri çerçevesinde yeni sütun (sütunları kullanarak) subject.no ve konu, sırasıyla).

Yani nihai veri çerçevesi şu şekilde görünmelidir:

wide.format.aim <- data.frame(subject = c(1, 2), age = c(26,27), gender = c("m","f"), condition = c("prime","control")) 

     subject age gender condition 
>1  1 26  m  prime 
>2  2 27  f control 

Ben birleştirme denedim ama bu geniş formatlı veri çerçevesinden bilgilerle eklenmiş uzun formatlı veri çerçevesi ile sona erdi ... ama

test.it <- merge(x=wide.format, y=long.format[,c("subject.no", "condition")], all.x=T, by.x="subject", by.y="subject.no") 

Herhangi öneriler: Ben

Bu denedim budur ... tersi istiyor?

Şimdiden teşekkürler!

+0

bu değerleri (üzgünüm bu gerçek değişken adları ile olan) testi kullanılarak birleştirebilirsiniz. bu <- birleştirme (x = data.values, y = veri [, c ("subject_nr", "Bedingung")], all.x = T, by.x = "vp.list", by.y = "konu_nr ") - ama bu işe yaramadı (eğer isterseniz daha ne olduğunu açıklayabilirim ...) – Mathias

+0

tamam! Bu sadece – Mathias

cevap

0

Sen long.format[,c("subject.no", "condition")] gelen benzersiz değerler birleştirme ilgilenen:

unique(long.format[,c("subject.no", "condition")]) 
# subject.no condition 
#1   1  prime 
#5   2 control 

Sen birleştirme denedim

merge(x = wide.format, 
     y = unique(long.format[,c("subject.no", "condition")]), 
     by.x = "subject", 
     by.y = "subject.no") 
# subject age gender condition 
#1  1 26  m  prime 
#2  2 27  f control 
+0

şimdi anlamak kolay olduğunu umuyoruz sadece doğru yerde tek bir basit kelime "benzersiz()" ... Bu işe yaradı, çok teşekkür ederim! – Mathias

+0

@Mathias Ayrıca, varolan kodunuzun etrafında bir 'unique()' atmış olabilirsiniz, ancak ilk önce birleştirmek yerine çiftleri filtrelemek yerine benzersiz altkümeyi birleştirmek daha verimli görünebilir. – Jota

İlgili konular