2016-11-18 140 views
-1

我有一個嵌套組(使用summarizedyplr中生成)的data.frame。每個案例包含2個組。對於兩組中的每一組,我都有另一個變量的最大值和最小值。所以對於每種情況,我有2個最大值和2個最小值。我所要做的是創建一個跨組特定的條件下編碼1一個新的指標變量。下面是一些產生看起來像我的樣本數據代碼:比較R中的組中的最大值和最小值

data <- expand.grid(groupID=1:2, caseID=1:3) 
data$max <- rnorm(nrow(data)) 
data$min <- rnorm(nrow(data)) 

所以,基本的數據是這樣的:

> data 
    groupID caseID   max   min 
1  1  1 -0.17317875 -0.65772183 
2  2  1 -0.32221584 1.39254577 
3  1  2 0.33535437 -1.55013998 
4  2  2 -0.03950875 1.24181830 
5  1  3 1.00759879 -1.29394582 
6  2  3 0.28469228 -0.03454565 

我要的是一個指標,唯一的每個caseID,即生成通過比較groupID中的值。就是說,如果組1的最大比最小更大組2:

groupID caseID   max   min newVar 
1  1  1 -0.17317875 -0.65772183  0 
2  2  1 -0.32221584 1.39254577  0 
3  1  2 0.33535437 -1.55013998  0 
4  2  2 -0.03950875 1.24181830  0 
5  1  3 1.00759879 -1.29394582  1 
6  2  3 0.28469228 -0.03454565  1 
+0

您的隨機數據沒有一般情況下,max> min。 – Frank

回答

1

您可以在組中的子集的列向量是這樣的:

library(dplyr) 

data %>% 
    group_by(caseID) %>% 
    mutate(newVar = max[groupID == 1] > min[groupID == 2]) 
+0

這做到了。我知道這是一個很簡單的答案,我是在被那裏的方式90%是令人沮喪的空間。謝謝!! –