基于不同数据帧中的值的变量值

时间:2013-09-10 12:59:12

标签: r merge

我认为这是相当简单的,但不幸的是我还没有找到解决方案。我找到了提示herehere,但他们没有解决问题。

我有一个包含选举结果的数据框(x.melt;几千行)和另一个只包含聚会名称和民族关系的数据框(parties.bih)。这两个数据帧具有不同的维度。

dataframe parties.bih

                           party ethnicity
1                        BPS         B
2                       SBiH         B
3                        SDP         X
4                        SDS         S
5                        DNZ         B
6                        SDA         B
7                        PDP         S
8                        DNS         S
9                      NSRzB         C
10                      SNSD         S
11 HDZ.1990.HZ.HSS.HKDU.HDU.         C
12                   HDZ.HNZ         C
13                    SBBBiH         B
14                    HDZBiH         C
15        Croatian.Coalition         C

我想要做的就是将每一方的民族联系(在数据框party.bih中)添加到选举结果中(在dataframe x.melt中)。

当我尝试这个命令时,会增加种族隶属关系,但不符合每一方。

x.melt$ethnicity[x.melt$party==parties.bih$party] <- parties.bih$ethnicity

当我尝试合并命令时,行&#34; party&#34;消失。我当然可以复制派对专栏,但必须有一个更简单的解决方案。

tt <- merge(x.melt, parties.bih, by.x="party", by.y="party", all.x=TRUE)

我仍然是R的新手,并且认为实际上这很容易,但我根本没想到它。非常感谢。

1 个答案:

答案 0 :(得分:0)

合并应该有效,输出数据框中包含用于合并的列。这对我来说至少适用于示例数据帧:

class<- c("A","B","C","D"); var1<- 1:4; var2<- 30:33
df1<- data.frame(class,var1)
df2<- data.frame(class,var2)
tt <- merge(df1, df2, by="class",all=TRUE)

输出:

> tt

class var1 var2
1     A    1   30
2     B    2   31
3     C    3   32
4     D    4   33

或者我误解了你的问题?