【问题标题】:Division between two columns with unequal lengths in two data frames两个数据框中长度不等的两列之间的划分
【发布时间】:2021-03-19 17:45:30
【问题描述】:

我有以下两个数据框: df1

Item Number Weight
A 2 25
B 3 15
B NA 20
C NA 10

df2

Item Average_Weight
A 12.5
B 5
C 10

对于 df1 中 Number 为 NA 的项目,我想通过将 df1 中的权重除以 df2 中项目的 Average_Weight 来估计数量。然后估计的 Number 将替换 df1 中的 NA。

结果如下: df1

Item Number Weight
A 2 25
B 3 15
B 4 20
C 1 10

感谢您提供的任何帮助!

【问题讨论】:

    标签: r dataframe dplyr division


    【解决方案1】:

    您可以在第二步中加入数据集并更改 Number

    代码

    df1 %>% 
      left_join(df2, by = "Item") %>%
      mutate(Number = ifelse(is.na(Number), Weight/Average_Weight, Number)) %>%
      select(-Average_Weight)
    
      Item Number Weight
    1    A      2     25
    2    B      3     15
    3    B      4     20
    4    C      1     10
    

    数据

    df1 <- structure(list(Item = structure(c(1L, 2L, 2L, 3L), .Label = c("A", 
    "B", "C"), class = "factor"), Number = c(2L, 3L, NA, NA), Weight = c(25L, 
    15L, 20L, 10L)), class = "data.frame", row.names = c(NA, -4L))
    
    df2 <- structure(list(Item = structure(1:3, .Label = c("A", "B", "C"
    ), class = "factor"), Average_Weight = c(12.5, 5, 10)), class = "data.frame", row.names = c(NA, 
    -3L))
    

    【讨论】:

    • 有效!谢谢 tamtam
    猜你喜欢
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2020-04-30
    • 2021-10-01
    相关资源
    最近更新 更多