【问题标题】:Create a new column with a condition of another dataframe [duplicate]使用另一个数据框的条件创建一个新列[重复]
【发布时间】:2021-08-06 04:04:48
【问题描述】:

我有两个 DF

df1
  Zone                            Tarif
  <dbl>                           <dbl>
1     1                           0.125
2     2                           0.217
3     3                           0.307
4     4                           0.387
5     5                           0.449
6     6                           0.580
7     7                           0.684
8     8                           0.894

df2
   state total shipments koerier zone_shipments koerierkosten gewichtkoerier gewichtzone zone
AZ    AZ             453      91            362           637           1092    702226.2    6
CA    CA            2176     436           1740          3052           5232   2964741.2    5
ID    ID             261      53            208           371            636    431186.9    2
MT    MT             526     106            420           742           1272    485048.1    2
NV    NV             265      53            212           371            636    484546.3    5
OR    OR             410      82            328           574            984    591250.8    3
WA    WA             521     105            416           735           1260    798673.8    1

我想在 df2 (df2$tarif) 中创建一个新列,其中包含来自 df1 的配对区域和关税值。 示例:如果 df2$zone = 6 那么 df2$tarif = 0.580(来自 df1 的信息)

预期输出

df2
   state total shipments koerier zone_shipments koerierkosten gewichtkoerier gewichtzone zone  tarif
AZ    AZ             453      91            362           637           1092    702226.2    6   0.580
CA    CA            2176     436           1740          3052           5232   2964741.2    5   0.449
ID    ID             261      53            208           371            636    431186.9    2   0.217
MT    MT             526     106            420           742           1272    485048.1    2   0.217
NV    NV             265      53            212           371            636    484546.3    5   0.449
OR    OR             410      82            328           574            984    591250.8    3   0.307
WA    WA             521     105            416           735           1260    798673.8    1   0.125

【问题讨论】:

    标签: r dataframe if-statement conditional-statements


    【解决方案1】:

    我们可以使用join

    library(dplyr)
    df2 %>% 
       left_join(df1, by = c("zone" = "Zone"))
    

    或与merge 来自base R

    merge(df2, df1, by.x = 'zone', by.y = 'Zone', all.x = TRUE)
    

    【讨论】:

      【解决方案2】:

      我们可以为此使用merge

      df2 <- merge(df2, df1, by.x = "Zone")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-12
        • 2018-02-13
        • 2019-08-18
        • 2021-02-03
        • 1970-01-01
        • 2018-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多