2016-09-23 74 views
-2

我有一個現有的數據集表。例如,表調用Table從現有表中創建新表R

  V1 V2   V3 
1  S301 OR  1575.3078990 
2  S301 AND  1006.5031070 
3  S301 OR  938.3647756 
4  S302 OR  1106.0894270 
5  S302 AND  1239.9842820 
6  S302 OR  885.3624568 

我想這個表重組爲一個新的地方列V2被分成「和」和「或」列,值是 的平均值'And'列中的表1 V2中的'And'以及'Or列'中的表1 V2中的S301的所有'OR'的均值。

我一直在努力這麼久,所以任何幫助將不勝感激!提前感謝大家。

回答

0

你說你有一個現有的「數據集表」。這不是R中的一個類型,我假設你的意思是data.table。

library(data.table) 
theDT <- data.table(matrix(c(rep("S301", 3), rep("S302", 3), 
          c("OR", "AND", "OR", "OR", "AND", "OR", 
          1575.3, 1006.5, 938.4, 1106.1, 1240, 885.4)), 
          ncol = 3)) 
theDT$V3 <- as.numeric(theDT$V3) 
> theDT 
    V1 V2  V3 
1: S301 OR 1575.3 
2: S301 AND 1006.5 
3: S301 OR 938.4 
4: S302 OR 1106.1 
5: S302 AND 1240.0 
6: S302 OR 885.4 

那麼你的答案是

> theDT[, mean(V3), by = c("V1","V2")] 
    V1 V2  V1 
1: S301 OR 1256.85 
2: S301 AND 1006.50 
3: S302 OR 995.75 
4: S302 AND 1240.00 
+0

爲什麼downvote?這是OP要求的答案 – hedgedandlevered

0

爲了讓AND和OR列分開,你可以做到這一點。

dat.1 <- aggregate(V3~V2+V1,data=dat, mean) 
dat.2 <- reshape(m, direction='wide', idvar='V1', timevar='V2') 
names(dat.2) <- c('ID', 'AND', 'OR') 

dat.1看起來像這樣

V2 V1  V3 
1 AND S301 1006.5031 
2 OR S301 1256.8363 
3 AND S302 1239.9843 
4 OR S302 995.7259 

dat.2最終會看起來像這樣:

ID  AND  OR 
1 S301 1006.503 1256.8363 
3 S302 1239.984 995.7259