2017-02-06 63 views
1
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),需要一個數據幀,rowname,colname的和值輸入,並返回一個或data.frame矩陣行名,列名和值的列表下面改組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

看看在reshape2包,功能'cast'和'melt'可能是你在找什麼。 dplyr; – Bastien

+0

library(dplyr); (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