【问题标题】:Combining values from two different data frames组合来自两个不同数据帧的值
【发布时间】:2012-04-23 15:39:36
【问题描述】:

我有两个这样的数据框:

df.1 <- data.frame(
     var.1 = sample(1:10),
     code = sample(c("A", "B", "C"), 10, replace = TRUE))

df.2 <- data.frame(
    var.2 = sample(1:3),
    row.names=c("A","B","C"))

我需要做的是添加第三列 df.1$var.2 ,对于 df.1$code 中的每个值,根据它们的行名从 df.2$var.2 中获取值。

我到了这一点,但没有成功.. 建议?

for (i in 1:length(df.1$code)){
    if(df.1$code[i] == rownames(df.2))
    df.1$var.2[i] <- df.2$var.2
    }

【问题讨论】:

标签: r for-loop


【解决方案1】:

你的意思是这样的:

df.2$code <- rownames(df.2)
> merge(df.1,df.2,by = "code")
   code var.1 var.2
1     A     5     1
2     B     3     2
3     B     2     2
4     B     7     2
5     B    10     2
6     C     8     3
7     C     4     3
8     C     1     3
9     C     9     3
10    C     6     3

【讨论】:

  • 没错,显然总有一种不那么复杂的方式......谢谢
【解决方案2】:

或者,plyr 包中的 join() 以保留 df.1 的顺序

df.2$code <- rownames(df.2)
library(plyr)
join(df.1, df.2, by = "code")

   var.1 code var.2
1      7    B     2
2      2    A     1
3      3    C     3
4      6    B     2
5     10    C     3
6      4    C     3
7      1    C     3
8      8    B     2
9      9    A     1
10     5    C     3

【讨论】:

    猜你喜欢
    • 2022-11-25
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多