2017-02-06 5 views
1
Iはデータフレーム、rowname、COLNAME、および値の入力を受け取り、行名、カラム名と値として有するdata.frameまたはマトリックスを返す関数 fun(df, rowname, colname, valname)を作成する
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 

の集計に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 
+0

は、関数 'cast'と' melt'は、あなたが探しているものであってもよいし、reshape2パッケージを見てみましょう。 – Bastien

+0

ライブラリー(dplyr); spread(df、x、val) – user127649

答えて

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 
+1

ベースRの 'reshape':' reshape(df、direction = "wide"、idvar = "y"、timevar = "x") 'です。 – lmo