向data.frame添加缺少的唯一行

时间:2014-10-13 02:15:24

标签: r dplyr reshape2

所以我有两个不同长度的数据帧。我试图通过添加缺少tdx的dx中的行来使它们具有相似的长度。在这种情况下,tdx缺少Age ==“UNSP”的行。我有其他可能缺少不同行的数据集;我想找到一种方法来识别哪些行丢失,然后输出添加这些行;年份列(对于该行)将是NA值。

更明确地说,输出将是一个数据框,其中tx和tdx数据并排,性别和年龄相匹配。

以下是我的尝试(感谢理查德指出我忘记添加此内容)

(extra <- rbind(dx[8,],dx[16,]))
(extra[,3] <- NA)

ttdx <- rbind(extra,tdx, deparse.level = 1)

然后我把它安排回正常。它有效,但我宁愿采用更有效和自动化的方式(对于我的其他数据集)

如果我更了解如何通过计算机识别data.frames之间的差异,我可能会使用dplyrreshape2来添加缺失的行。

> head(dx,n = 12L)

   Gender   Age Year.10 Year.11 Year.12 Year.13
1  FEMALE   0-2   48020   43120   39120   14360
2  FEMALE   3-9   87930  101850   98750   85400
3  FEMALE 10-19    5700   47730   53590   18800
4  FEMALE 20-39  147230  134560   62090   71120
5  FEMALE 40-59  202770  142230  116120   98830
6  FEMALE 60-64   34980   49170   46260  110120
7  FEMALE   65+  256240  296710  254040  266690
8  FEMALE  UNSP    5500      NA      NA      NA
9    MALE   0-2   75170   52990   28110   32160
10   MALE   3-9   66360   89840   79220   39470
11   MALE 10-19   62960   15060   26700   26310
12   MALE 20-39   39670  145380  101880   94500

> head(tdx, n = 12L)

   Gender   Age Year.10 Year.11 Year.12 Year.13
1  FEMALE   0-2   36800   24560   25790   12400
2  FEMALE   3-9   77980   75810   79560   74450
3  FEMALE 10-19    5700   47730   51470   18800
4  FEMALE 20-39  147230  102400   42360   58190
5  FEMALE 40-59  179550  112510  105000   79140
6  FEMALE 60-64   33800   37380   35040   83670
7  FEMALE   65+  206270  202790  185460  225620
8    MALE   0-2   59930   46350   28110   26490
9    MALE   3-9   53260   62770   71350   32380
10   MALE 10-19   60490   15060   25260   20660
11   MALE 20-39   32490  132830   94950   88640
12   MALE 40-59   57950   70370  149790  136730

1 个答案:

答案 0 :(得分:0)

最终工作的是merge(dx, tdx, by=c('Gender','Age'), all=TRUE)

谢谢马特。