在R中转换data.frame [英] Transforming data.frame in R

查看:164
本文介绍了在R中转换data.frame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下数据框:

  foo<  -  data.frame(abs(cbind(rnorm(3) ,rnorm(3,mean = .8),rnorm(3,mean = .9),rnorm(3,mean = 1))))
colnames(foo)< - c(w x,y,z)
rownames(foo)< - c(n,q,r)
foo
#wxyz
#n 1.51550092 1.4337572 1.2791624 1.1771230
#q 0.09977303 0.8173761 1.6123402 0.1510737
#r 1.17083866 1.2469347 0.8712135 0.8488029

我想做的是将其更改为:

  newdf 
#1 nw 1.51550092
#2 qw 0.09977303
#3 rw 1.17083866
#4 nx 1.43375725
#5 qx 0.81737606
#6 rx 1.24693468
#7 ny 1.27916241
#8 qy 1.61234016
#9 ry 0.87121353
#10 nz 1.17712302
#11 qz 0.15107369
#12 rz 0.84880292
/ pre>

有什么方法?

解决方案

reshape2 ::: melt()特别适合这种转换:

  library(reshape2)

foo< - cbind(ID = rownames(foo),foo)
melt(foo)
#使用ID作为变量
#ID变量值
#1 nw 1.7337416
#2 qw 0.5890877
#3 rw 0.2245508
#4 nx 0.5237346
#5 qx 0.9320455
#6 rx 0.8156573
#7 ny 1.9287306
#8 qy 1.1604229
#9 ry 1.7631215
#10 nz 0.3591350
#11 qz 0.9740170
#12 rz 0.5621968


I have the following data frame:

foo <- data.frame( abs( cbind(rnorm(3),rnorm(3, mean=.8),rnorm(3, mean=.9),rnorm(3, mean=1))))
colnames(foo) <- c("w","x","y","z")
rownames(foo) <- c("n","q","r")
foo
#            w         x         y         z
# n 1.51550092 1.4337572 1.2791624 1.1771230
# q 0.09977303 0.8173761 1.6123402 0.1510737
# r 1.17083866 1.2469347 0.8712135 0.8488029

What I want to do is to change it into :

newdf
# 1     n    w 1.51550092
# 2     q    w 0.09977303
# 3     r    w 1.17083866
# 4     n    x 1.43375725
# 5     q    x 0.81737606
# 6     r    x 1.24693468
# 7     n    y 1.27916241
# 8     q    y 1.61234016
# 9     r    y 0.87121353
# 10    n    z 1.17712302
# 11    q    z 0.15107369
# 12    r    z 0.84880292

What's the way to do it?

解决方案

reshape2:::melt() is particularly well suited to this transformation:

library(reshape2)

foo <- cbind(ID=rownames(foo),  foo)
melt(foo)
# Using ID as id variables
#    ID variable     value
# 1   n        w 1.7337416
# 2   q        w 0.5890877
# 3   r        w 0.2245508
# 4   n        x 0.5237346
# 5   q        x 0.9320455
# 6   r        x 0.8156573
# 7   n        y 1.9287306
# 8   q        y 1.1604229
# 9   r        y 1.7631215
# 10  n        z 0.3591350
# 11  q        z 0.9740170
# 12  r        z 0.5621968

这篇关于在R中转换data.frame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆