将数据帧级别转换为R中的列

时间:2015-09-08 20:32:46

标签: r type-conversion

假设我有一个包含3列的数据框,如下所示:

Sample  Compound     Area
1   A     Deet       22196836.0
2   A     Allethrin  NA
3   B     Deet       12890878.4
4   B     Allethrin  133063.1
  etc

Sample列有12个级别,Compound有324个级别,整个数据帧有3888个总观察值。 我将如何转换"样品"各个列的水平,"化合物"等级成行和相应的"区域"相应填写如下:

                 A            B           C            D
1   Deet         22196836.0   12890878.4
2   Allethrin    NA           133063.1

我对R知之甚少,并且如果这是基本的东西而道歉。我尝试过搜索,但不要以为我在这里使用正确的术语来为我提供任何有用的结果。

3 个答案:

答案 0 :(得分:2)

使用reshape2包,您可以采用宽格式重新整形:

dcast(Compound~Sample,data=dat)

##    Compound        A          B
## 1 Allethrin       NA   133063.1
## 2      Deet 22196836 12890878.4

答案 1 :(得分:2)

您的数据是“长格式”,您希望它采用“宽格式”。请参阅here for a quick explanation

有多种方法可以在R中重塑这些模式之间的数据。tidyr是专门为此做的一个包:

library(tidyr)
spread(dta, Sample, Area)
   Compound        A          B
1 Allethrin       NA   133063.1
2      Deet 22196836 12890878.4

答案 2 :(得分:1)

或者只是使用R:

附带的统计数据包
reshape(df, timevar="Sample", idvar="Compound", direction="wide")

##    Compound   Area.A     Area.B
## 1      Deet 22196836 12890878.4
## 2 Allethrin       NA   133063.1