【问题标题】:r if else based on multiple conditionsr if else 基于多个条件
【发布时间】:2015-04-21 13:46:41
【问题描述】:

我有一个数据集data1如下

          Group     Code
          Blue      1333
          Blue      4444
          Blue      9876
          Blue      8785
          Red       3145
          Red       8756
          Red       9745
          Red       8754

第二个数据集data2如下

          Id       Description
          1333     Sea Weed
          4444     Honey Roasted Peanut
          8754     Green Tea
          8756     Potato Chips
          3145     Strawberry Grahams
          8787     Arizona Ice Tea

我正在尝试在我的第二个 Dataset 中创建第三列,data2 存储

           1  - If the code is from blue Group in Data1 and matches with Id in Data2, Data1$Group = Blue && Data1$Code == Data2$Id

           2  - If the code is from Red Group in Data1 and matches with Id in Data2, Data1$Group = Red && Data1$Code == Data2$Id

           0  - If the Id in Data2 does not match the Code in Data1 , regardless of whether it is Blue or Red group.

最终的数据集应该是这样的

          Id       Description             Result
          1333     Sea Weed                1  
          4444     Honey Roasted Peanut    1
          8754     Green Tea               2
          8756     Potato Chips            2 
          3145     Strawberry Grahams      2 
          8787     Arizona Ice Tea         0

需要帮助

【问题讨论】:

  • dat2$Result <- dat1$Group[match(dat2$Id, dat1$Code)] 会给你颜色 - 然后你可以重新编码
  • @ :) 完美+1
  • 由于您在帖子中包含标签“dplyr”,这里有一个“dplyr”答案:dat2 <- dat2 %>% left_join(dat1,by=c('Id'='Code')) %>% select(Id,Description,Result=Group)(尽管基本 R 答案更容易遵循...)

标签: r if-statement dplyr


【解决方案1】:

更简单的基本 R 答案是使用 merge

> merge(data1, data2, by.x='Code', by.y='Id', all.y=T)

  Code Group          Description
1 1333  Blue             Sea Weed
2 3145   Red   Strawberry Grahams
3 4444  Blue Honey Roasted Peanut
4 8754   Red            Green Tea
5 8756   Red         Potato Chips
6 8787  <NA>      Arizona Ice Tea

如果您决定使用dplyr,那么重命名列是最简单的方法,即重命名列以使其与合并表匹配

data2 %>% rename(Code=Id) %>% left_join(data1)

【讨论】:

    猜你喜欢
    • 2020-12-29
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 2021-08-20
    • 2013-12-19
    • 2020-05-31
    相关资源
    最近更新 更多