2016-09-23 56 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