从R

时间:2016-09-23 21:23:17

标签: r

我有一个现有的数据集表。例如,该表称为Table1

         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被拆分为'并且'和'或'列,值为 所有'和'的平均值对于表1中的S301,'和'列
并且意味着所有' OR'对于表1中的S301,在'或列'。

我一直在努力解决这个问题,所以任何帮助都会非常感激!非常感谢你们。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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