数据框:将每个组除以与R?中每个组相对应的向量。

时间:2018-11-19 13:59:58

标签: r dataframe datatable

我有一个像这样的数据框:

df1 <- structure(list(user_id = c(1, 1, 1, 2, 2, 2, 3, 3, 3), param_a = c(123, 
2.3, -9, 1, -0.03333, 4, -41, -12, 0.89)), .Names = c("user_id", 
"param_a"), row.names = c(NA, -9L), class = c("tbl_df", "tbl", 
"data.frame"))

和另外dataframe个向量:

df2 <- structure(list(user_id = c(1, 2, 3), param_b = c(34, 12, -0.89
)), .Names = c("user_id", "param_b"), row.names = c(NA, -3L), class = c("tbl_df", 
"tbl", "data.frame"))

现在我想将df1中的每个组除以df2中的相应值:

例如,对于一组用户1,将每行除以param_b第一个向量:

    user_id param_a
    1       123/34 
    1       2.3/34 
    1      -9/34
    2       1/12
    2      -0.03333/12
    2       4/12
....

对于用户2,每行除以param_b秒向量。

请告知如何将用户dataframe分组的分组除以每个分组的向量?

PS

如果我将df1扩展到param_a,param_k,param_p

和df2分别使用param_b,param_l,param_r扩展了

如何执行此类操作? @nicola建议了一个非常好的解决方案,但我想扩展它。

1 个答案:

答案 0 :(得分:1)

像这样?

 df1%>%
       left_join(df2)%>%
       mutate(result=param_a/param_b)
    Joining, by = "user_id"
    # A tibble: 9 x 4
      user_id   param_a param_b    result
        <dbl>     <dbl>   <dbl>     <dbl>
    1       1  123        34      3.62   
    2       1    2.3      34      0.0676 
    3       1   -9        34     -0.265  
    4       2    1        12      0.0833 
    5       2   -0.0333   12     -0.00278
    6       2    4        12      0.333  
    7       3  -41        -0.89  46.1    
    8       3  -12        -0.89  13.5    
    9       3    0.89     -0.89  -1