当具有不同级别的按因子R时合并

当具有不同级别的按因子R时合并,r,merge,R,Merge,我想再检查一下。我正在尝试将一个大数据集合并为一个小数据集。我的大数据帧包含的观测值不包括在小数据集中。我无法使用标准代码与数据帧进行简单合并 x<-merge(df1,df2) ###default is all=FALSE. ###output from this code produces a df with 49 rows instead of 13 大数据帧 noms fruits apple orange kiwi all_comb c

我想再检查一下。我正在尝试将一个大数据集合并为一个小数据集。我的大数据帧包含的观测值不包括在小数据集中。我无法使用标准代码与数据帧进行简单合并

x<-merge(df1,df2) ###default is all=FALSE. 
                  ###output from this code produces a df with 49 rows instead of 13
大数据帧

 noms fruits apple orange kiwi all_comb comb numbers
1  mary  apple     1      0    0        1    1       1
2  mary  grape     0      0    0        0    1       2
3  mary orange     0      1    0        0    1       3
4  mary  apple     1      0    0        1    1       4
5  john banana     0      0    0        0    1       1
6  john  apple     1      0    0        1    1       2
7  john  apple     1      0    0        1    1       3
8  john  apple     1      0    0        1    1       4
9  lucy   kiwi     0      0    1        0    1       1
10 lucy orange     0      1    0        0    1       2
11 lucy  apple     1      0    0        1    1       3
12 lucy  berry     0      0    0        0    1       4
13  tom orange     0      1    0        0    1       1
  noms age
1  jane  50
2  jane  50
3  jane  50
4  jane  50
5  mary  65
6  mary  65
7  mary  65
8  mary  65
9  john  34
10 john  34
11 john  34
12 john  34
13  pat  65
14  pat  65
15  pat  65
16 lucy  89
17 lucy  89
18 lucy  89
19 lucy  89
20  tom  12
所需输出

df


这就是你想做的吗

df_agg <- aggregate(age ~ noms, df_large, max)
merge(df_agg, df_small, by = "noms")

df_agg这就是你想要做的吗

df_agg <- aggregate(age ~ noms, df_large, max)
merge(df_agg, df_small, by = "noms")

df_agg如果您使用的是
df2的唯一行,那么它会起作用:

merge(df1, unique(df2))

   noms fruits apple orange kiwi all_comb comb numbers age
1  john banana     0      0    0        0    1       1  34
2  john  apple     1      0    0        1    1       2  34
3  john  apple     1      0    0        1    1       3  34
4  john  apple     1      0    0        1    1       4  34
5  lucy   kiwi     0      0    1        0    1       1  89
6  lucy orange     0      1    0        0    1       2  89
7  lucy  apple     1      0    0        1    1       3  89
8  lucy  berry     0      0    0        0    1       4  89
9  mary  apple     1      0    0        1    1       1  65
10 mary  grape     0      0    0        0    1       2  65
11 mary orange     0      1    0        0    1       3  65
12 mary  apple     1      0    0        1    1       4  65
13  tom orange     0      1    0        0    1       1  12

如果您使用的是
df2的唯一行

merge(df1, unique(df2))

   noms fruits apple orange kiwi all_comb comb numbers age
1  john banana     0      0    0        0    1       1  34
2  john  apple     1      0    0        1    1       2  34
3  john  apple     1      0    0        1    1       3  34
4  john  apple     1      0    0        1    1       4  34
5  lucy   kiwi     0      0    1        0    1       1  89
6  lucy orange     0      1    0        0    1       2  89
7  lucy  apple     1      0    0        1    1       3  89
8  lucy  berry     0      0    0        0    1       4  89
9  mary  apple     1      0    0        1    1       1  65
10 mary  grape     0      0    0        0    1       2  65
11 mary orange     0      1    0        0    1       3  65
12 mary  apple     1      0    0        1    1       4  65
13  tom orange     0      1    0        0    1       1  12
merge(df1, unique(df2))

   noms fruits apple orange kiwi all_comb comb numbers age
1  john banana     0      0    0        0    1       1  34
2  john  apple     1      0    0        1    1       2  34
3  john  apple     1      0    0        1    1       3  34
4  john  apple     1      0    0        1    1       4  34
5  lucy   kiwi     0      0    1        0    1       1  89
6  lucy orange     0      1    0        0    1       2  89
7  lucy  apple     1      0    0        1    1       3  89
8  lucy  berry     0      0    0        0    1       4  89
9  mary  apple     1      0    0        1    1       1  65
10 mary  grape     0      0    0        0    1       2  65
11 mary orange     0      1    0        0    1       3  65
12 mary  apple     1      0    0        1    1       4  65
13  tom orange     0      1    0        0    1       1  12