我有一个像这样的数据框:
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建议了一个非常好的解决方案,但我想扩展它。
答案 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