【发布时间】:2018-11-19 13:59:58
【问题描述】:
我有一个这样的数据框:
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 分组的每个组除以一个向量?
附言
如果我将 df1 扩展到 param_a、param_k、param_p
df2 相应地扩展了 param_b、param_l、param_r
我该如何执行这种操作? @nicola 提出了一个非常好的解决方案,但我想扩展它。
【问题讨论】:
-
试试
df1$param_a/df2$param_b[match(df1$user_id,df2$user_id)]。 -
@nicola 它不起作用
-
@nicola,如果我有 param_a、param_k、param_p 和 param b 是多个数字的向量,它不起作用。
-
它适用于您的示例。你应该说明它为什么不起作用并提供一个更好的例子。 FWIW,这种“行不通”,没有其他任何东西是如此令人沮丧,让我质疑为什么我仍然在这个网站上试图帮助别人。
-
@nicola,对不起。你是完全正确的。我只是认为这是一种通用的方法,但是当我将它应用于更多变量时,它就不起作用了。你能给些建议么?我会尽快更新我的问题。