2016-04-02 29 views
-1

kullanmamasından emin değilim Verilerimdeki bir sütunu BMI kategorilerine ayıran yeni bir sütun oluşturmaya çalışıyorum, sonra yeni, eksiksiz bir veri çerçevesine girebilirim . Ancak, şu anki yöntemim yalnızca sayısal bir vektör üretir. Sonuç olarak, bu, orijinal veri kümeme geri dönecek gibi görünmüyor.Neden birleştirme kesik() in R

BMI_cut <- cut(alldata$BMI, 
       breaks = c(-Inf, 18.5, 25.0, 30.0, Inf), 
       labels = c("<18.50", "18.50-24.99", "25.00-29.99", ">=30.00"),   
       right = FALSE) 

BMIbind <- rbind(sorteddata, BMI_cut) 

bu çalışıyorum, ben hata alıyorum: Uyarı mesajları: 1: [<-.factor yılında (*tmp*, ri, değeri = 2L): geçersiz faktör düzeyi, NA İşte

benim kodudur 2 oluşturulur: geçersiz faktör düzeyi, UA

oluşturulan ve sonuç, orjinal veri ve BKİ kategorisi sütunu olan bir bağlama olup: [<-.factor (r, değeri = 2L *tmp*) içinde . Tek fark, < NA>, 2 ve 3 değerlerine sahip yeni bir satırdır. Bunu anlamıyorum.

Tamamen yeni bir başlangıç ​​yapıyorum. Ek olarak, daha kolay yapabileceklerine benzeyen bazı paketler varken, bunları bir ödev için kullanamıyorum. Herhangi bir yardım büyük takdir edilecektir.

+0

Eğer bazı sağlayabilir ' allduta $ BMI '' dput' kullanarak? Aksi halde probleminiz [çoğaltılamaz] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610). –

+0

Kesme komutu için data.frame 'alldata'yı kullanırsınız, 'sortdata' işlevini kullanırsınız. Bu ikisinin aynı olma ihtimali yok mu? – Thilo

cevap

0

Epeyce sorun görüyorum. Yukarıdaki yorumda da belirtildiği gibi, bir defaya mahsus olmak için farklı data.frames kullanırsınız. Ayrıca, cbind ve rbind'u karıştırıyor gibi görünüyorsunuz. rbind iki özdeş data.frames, cbind farklı sütunlar çıkarır.

rbind için
alldata$BMI_cut <- cut(alldata$BMI, 
         breaks = c(-Inf, 18.5, 25.0, 30.0, Inf), 
         labels = c("<18.50", "18.50-24.99", "25.00-29.99", ">=30.00"),   
         right = FALSE) 

ve cbind aşağıdaki karşılaştırmak:

Son olarak, bu sadece bu gibi data.frame için başka bir sütun ekleyerek yapılabilir

> rbind(data.frame(x=1:5), data.frame(x=6:10)) 
    x 
1 1 
2 2 
3 3 
4 4 
5 5 
6 6 
7 7 
8 8 
9 9 
10 10 
> cbind(data.frame(x=1:5), data.frame(x=6:10)) 
    x x 
1 1 6 
2 2 7 
3 3 8 
4 4 9 
5 5 10