将data.frame重新组织为值列表

时间:2017-02-06 20:36:59

标签: r

df <- data.frame(x=c(1,2,1,2,3,3), y = c(letters[1:5],'a'), val = c(1:5, 9))
print(df)
  x y val
  1 a   1
  2 b   2
  1 c   3
  2 d   4
  3 e   5
  3 a   9

我想创建一个函数fun(df, rowname, colname, valname),它接受​​一个dataframe,rowname,colname和value输入,并返回一个data.frame或矩阵,其中包含行名,列名和值,如下所示

fun(df, "x","y","val") should return

    1 2 3
 a  1 NA 9
 b  NA 2 NA
 c  3 NA NA
 d  NA 4  NA  
 e  NA NA 5

1 个答案:

答案 0 :(得分:1)

reshape2库允许这种操作:

library(reshape2)

dcast(data=df, y~x, value.var = "val")

  y  1  2  3
1 a  1 NA  9
2 b NA  2 NA
3 c  3 NA NA
4 d NA  4 NA
5 e NA NA  5