假设我有一个包含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知之甚少,并且如果这是基本的东西而道歉。我尝试过搜索,但不要以为我在这里使用正确的术语来为我提供任何有用的结果。
答案 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