从半平面文件创建真正的平面文件

时间:2014-07-17 16:27:42

标签: r reshape flat-file

我有以下数据集(这是前10行,有> 500)。每一行描绘了一个独特的空间位置以及设置该站点的日期和工作人员。 NUMGB列是在该站点捕获的熊数,而GBIDSEX1,GBIDSEX8为在站点捕获的熊提供了单独的标识符

df <- read.table(text= 'CELL SITE INSTCREW INSTDATE NUMGB GBIDSEX1 GBIDSEX2 GBIDSEX3 GBIDSEX4 GBIDSEX5 GBIDSEX6 GBIDSEX7 GBIDSEX8
1 1 DF/EJ 2000-06-02          
2 1 DF/EJ 2000-06-02  3 F6514-001 M6514-012 F6514-023     
3 1 DF/EJ 2000-06-02  1 SPTEST       
4 1 DF/EJ 2000-06-02          
5 1 DF/EJ 2000-06-02  1 M6643-015       
6 1 DF/EJ 2000-06-02          
7 1 DF/EJ 2000-06-02  1 M6514-012       
8 1 DF/EJ 2000-06-02  2 F6566-001 M6509-005      
9 1 DF/EJ 2000-06-02          
10 1 DF/KP 2000-06-01  5 M6505-001  M6505-010 F6514-001 M6514-012 F6514-02   ' ,header=TRUE, sep=" ")

对于我想做的分析,我需要将每个熊身份证作为一个独特的行,包括网站,工作人员和日期信息。以下是我希望数据显示的示例:

CELL    SITE    INSTCREW    INSTDATE    NUMGB   GBIDSEX
2   1   DF/EJ   2000-06-02  3   F6514-001
2   1   DF/EJ   2000-06-02  3   M6514-012
2   1   DF/EJ   2000-06-02  3   F6514-023
3   1   DF/EJ   2000-06-02  1   SPTEST
5   1   DF/EJ   2000-06-02  1   M6643-015
7   1   DF/EJ   2000-06-02  1   M6514-012
8   1   DF/EJ   2000-06-02  2   F6566-001
8   1   DF/EJ   2000-06-02  2   M6509-005
10  1   DF/KP   2000-06-01  5   M6505-001
10  1   DF/KP   2000-06-01  5   M6505-010
10  1   DF/KP   2000-06-01  5   F6514-001
10  1   DF/KP   2000-06-01  5   M6514-012
10  1   DF/KP   2000-06-01  5   F6514-023

我想剔除没有捕获熊的行,这可以通过子集函数轻松完成:

dfcull<-subset(df, NUMGB>0)

但我不确定如何为每个GBIDSEX创建一个唯一的行。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以通过&#34; reshape2&#34; {<1}}轻松获得此功能:

melt