【问题标题】:variable value based on value in different dataframe [duplicate]基于不同数据帧中的值的变量值[重复]
【发布时间】:2013-09-10 12:59:11
【问题描述】:

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

我有一个包含选举结果的数据框(x.melt;几千行)和另一个数据框(parties.bih),其中仅包含政党名称和种族归属。这两个数据框具有不同的维度。

数据框party.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 中)添加到选举结果中(在数据框 x.melt 中)。

当我尝试这个命令时,添加了种族,但不是按照各方。

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

当我尝试合并命令时,“party”行消失了。我当然可以复制派对栏,但必须有更直接的解决方案。

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

我对 R 还是比较陌生,并假设这实际上很容易,但我根本没有弄清楚。非常感谢。

【问题讨论】:

标签: r merge


【解决方案1】:

合并应该可以工作,用于合并的列包含在输出数据框中。这至少对我适用于示例数据框:

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

还是我误解了你的问题?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多