2015-12-23 46 views
6

Genel olarak, bir veri çerçevesinin bir sütunundaki değerleri başka bir veri çerçevesindeki faktör değerlerine göre nasıl sınıflandırabilirim? Ben kesmek kullanılanR'de, bir veri çerçevesindeki değerleri başka bir veri çerçevesindeki aralıklara göre nasıl sınıflandırırsınız?

NewAge Type 
    5  A 
25  A 
18  B 
    9  A 
43  A 
15  B 
17  B 

() aralar

df2_cut <- data.frame(NewAge, 
         "AgeRange" = cut(NewAge, 
             breaks=AgeStart, 
             right=F, 
             include.lowest=T)) 
> df2_cut 
    NewAge AgeRange 
1  5 [0,10) 
2  25 [20,30) 
3  18 [10,20) 
4  9 [0,10) 
5  43 [40,50] 
6  15 [10,20) 
7  17 [10,20) 
oluşturmak için:

> df1 
    NewAge 
1  5 
2  25 
3  18 
4  9 
5  43 
6  15 
7  17 

> df2 
    AgeStart AgeEnd AgeType 
1  0  10  A 
2  10  20  B 
3  20  30  A 
4  30  40  B 
5  40  50  A 

ben df3 istiyorum: Örneğin, Df1 ve df2 verilen Ben DF3 (veya güncelleme dF1) üretmek istiyoruz

Ancak, aralık türüne (yani A veya B) göre df2_cut değerlerini nasıl sınıflandıracağımı bilmiyorum.

cevap

5

findInterval'u kullanabiliriz. Çıktı, 'AgeType' öğesinden karşılık gelen öğeleri almak için kullandığımız sayısal bir dizin olacaktır.

df3 <- transform(df1, Type=df2$AgeType[findInterval(NewAge, df2$AgeStart)]) 
df3 
# NewAge Type 
#1  5 A 
#2  25 A 
#3  18 B 
#4  9 A 
#5  43 A 
#6  15 B 
#7  17 B 

Veya ile labels=FALSE yılında cut

İlgili konular