2012-07-27 49 views
0

我正在尝试将治疗标签分配给我的实验ID。 SO一直在帮助我获得这么多,但现在我不确定为什么我的代码无法工作。 ID是数字(作为因子输入(colname是plotF)),处理是A,B和C.数据帧非常大,这是一个例子。基于前一列的行创建新列

data$trt[data$plotF == c(12, 21, 35, 43)] <- "A" 
data$trt[data$plotF == c(15, 23, 32, 41)] <- "B" 
data$trt[data$plotF == c(13, 24, 31, 46)] <- "C" 

输出是:

plotF trt 
21 <NA> 
24 C 
46 <NA> 
12 <NA> 
23 <NA> 
31 <NA> 
13 <NA> 
43 A 
32 <NA> 
15 <NA> 
35 A 
41 B 
24 <NA> 
46 <NA> 
32 B 
31 <NA> 
13 C 
21 A 
12 <NA> 
43 A 
23 <NA> 
15 <NA> 
41 <NA> 
35 <NA> 

为什么有时但并不总是工作?

回答

2

如果将==替换为%in%会发生什么情况?

data$trt[data$plotF %in% c(12, 21, 35, 43)] <- "A" 
data$trt[data$plotF %in% c(15, 23, 32, 41)] <- "B" 
data$trt[data$plotF %in% c(13, 24, 31, 46)] <- "C" 
+0

它就像一个魅力! – Nazer 2012-07-27 18:01:43