【问题标题】:R: Match a dataframe with 3 others, and create a columnR:将数据框与其他 3 个匹配,并创建一列
【发布时间】:2015-12-12 18:39:27
【问题描述】:

我有一个带有变量 id 的大数据帧 (df),以及 3 个其他数据帧 (df1, df2, df3) 具有这个 id 的一些值。所以就像大数据框的 id 为 1:100,df1 可能有 1,2,4,11 等。

我需要做的是向大数据框添加一列,以便它说明数据来自哪个较小的数据框。

df$new[df$id %in% df1$id] <- 1
df$new[df$id %in% df2$id] <- 2
df$new[df$id %in% df3$id] <- 3

df$new<- factor(df$new, labels = c('a', 'b', 'c'))

这是我的解决方案,但我不太喜欢它。还有其他想法吗?

【问题讨论】:

  • 这是编程的问题吗? IMO 这是一个品味问题。

标签: r merge match


【解决方案1】:

我们可以使用嵌套的ifelse

with(df, ifelse(id %in% df1$id, 'a',
         ifelse(id %in% df2$id, 'b',
         ifelse(id %in% df3$id, 'c', id)))

【讨论】:

    猜你喜欢
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2022-01-26
    • 2021-04-17
    • 2013-11-13
    相关资源
    最近更新 更多