R:表格格式

时间:2012-07-31 07:28:14

标签: r dataframe

我有一个包含以下列的Excel文件

Column1  Column2  Column3
ab        bb        0.5
ab        bc        0.1  
ab        cd        0.7
ab        dd        0.8
ac        bb        0.2
ac        bg        0.8
ac        ee        0.8
ac        dd        0.3


x <- data.frame (column1 = c("ab","ab","ab","ab","ac","ac","ac","ac"), 
                 column2 = c("bb","bc","cd","dd","bb","bg","ee","dd"),
                 column3 = c(0.5, 0.1, 0.7, 0.8, 0.2, 0.8, 0.8, 0.3))

我想改变它。

    ab   ac
bb  0.5  0.2
bc  0.1  
cd  0.7
dd  0.8  0.3
bg       0.8
ee       0.8

2 个答案:

答案 0 :(得分:3)

reshape2套餐是您的朋友:

require(reshape2)
dcast(x, column2 ~ column1, value.var="column3")
#   column2  ab  ac
# 1      bb 0.5 0.2
# 2      bc 0.1  NA
# 3      bg  NA 0.8
# 4      cd 0.7  NA
# 5      dd 0.8 0.3
# 6      ee  NA 0.8

更新

由于@jmsigner和我在同一时间发布了几乎完全相同的答案,这里是基础R中的一个选项,但是这并没有给你一个很好的输出:

reshape(x, direction="wide", idvar="column2", timevar="column1")
#   column2 column3.ab column3.ac
# 1      bb        0.5        0.2
# 2      bc        0.1         NA
# 3      cd        0.7         NA
# 4      dd        0.8        0.3
# 6      bg         NA        0.8
# 7      ee         NA        0.8

答案 1 :(得分:3)

xtabs(column3 ~ column2+column1, data=x, sparse=TRUE)
6 x 2 sparse Matrix of class "dgCMatrix"
    ab  ac
bb 0.5 0.2
bc 0.1 .  
bg .   0.8
cd 0.7 .  
dd 0.8 0.3
ee .   0.8

如果不使用'稀疏'参数,则缺少的类别中将为零。您可以用`is.na&lt; -

替换它们
xt <-  xtabs(column3 ~ column2+column1, data=x) 
is.na(xt) <- xt==0
xt
       column1
column2  ab  ac
     bb 0.5 0.2
     bc 0.1    
     bg     0.8
     cd 0.7    
     dd 0.8 0.3
     ee     0.8