2015-03-13 54 views
2

如果我创建single_panel $ PanelID(数据帧)的因素,并获得各级,我得到创建自定义的因素

levels(single_panel$PanelID) 

[1] "210E0110" "240E100E" "250E1050" "250E1051" "250E1053" "250E1057" "250E105A" "250E105F" 
[9] "250E1066" 

我想通过分组9分为5类,以创建自定义的水平

Road.Left =c("250E1050","250E1066"), 
Road.Right =c("250E1053", "250E105A"), 
Back.Left =c("250E1057","240E100E"), 
Back.Right =c("250E105F","250E1051") 
Pyranometer =c("240E100E") 

我认为这种方式可以实现为

levels(single_panel$PanelID, levels =(Road.Left =c("250E1050","250E1066"), Road.Right =c("250E1053", "250E105A"), Back.Left =c("250E1057","240E100E"), Back.Right =c("250E105F","250E1051"))) 

但是,这是行不通的。

的创造因素的想法是绘制基于因子变量

回答

1

数据这里有一个解决方案:

single_panel$newFactor <- with(single_panel, { 
     (PanelID == "250E1050" | PanelID == "250E1066")*1 + 
     (PanelID == "250E1053" | PanelID == "250E105A")*2 + 
     (PanelID == "250E1057" | PanelID == "240E100E")*3 + 
     (PanelID == "250E105F" | PanelID == "250E1051")*4 + 
     (PanelID == "240E100E")*5 
} 

single_panel$newFactor <- factor(single_panel$newFactor, 
           labels = c('Road.Left', 
              'Road.Right', 
              'Back.Left', 
              'Back.Right', 
              'Pyranometer')) 
+0

谢谢!这是有效的,因子中需要levels = 1:6属性 – Varoon 2015-03-13 17:25:04