【发布时间】:2018-07-27 08:42:11
【问题描述】:
有没有更好的方法在 r 中使用 dplyr 来做到这一点,而不必为每个变量输入一个新公式?
code dagala_price_1 dagala_price_2 dagala_price_3 dagala_price_4 dagala_price_5 dagala_unit_nb_1 dagala_unit_nb_2 dagala_unit_nb_3 dagala_unit_nb_4 dagala_unit_nb_5
MI-NAL-KA 50 15000 NA NA NA 100 1 NA NA NA
M-KK-KZ 10000 20000 NA NA NA 20 2 NA NA NA
M-KK-NK 10000 NA NA NA NA 5 NA NA NA NA
MI-NA-BA 12000 15000 NA NA NA 2 1 NA NA NA
MI-BD-BT 12000 15000 NA NA NA 3 1 NA NA NA
MI-MI-ND 12000 80000 NA NA NA 8 1 NA NA NA
MI-NAL-LT 13000 15000 NA 18000 NA 1 3 NA 1 NA
M-BY-BGY 13000 15000 NA NA NA 4 1 NA NA NA
MI-NA-NY 13000 NA NA NA NA 2 NA NA NA NA
MI-KAN-BL 18000 35000 15000 NA NA 1 1 6 NA NA
MI-KIGO-KR 20000 15000 15000 NA NA 10 8 4 NA NA
MI-KAN-KY 20000 16000 NA NA NA 2 6 NA NA NA
MI-NAL-BB 20000 35000 250000 NA NA 1 1 1 NA NA
MI-KAM-AL 30000 14000 13000 NA NA 1 10 2 NA NA
df <- df %>% mutate(
dagala_total_1 = dagala_price_1 * dagala_unit_nb_1,
dagala_total_2 = dagala_price_2 * dagala_unit_nb_2,
dagala_total_3 = dagala_price_3 * dagala_unit_nb_3,
dagala_total_total =dagala_total_1 + dagala_total_2 + dagala_total_3)
【问题讨论】:
-
对我来说看起来很干净。
-
我也觉得不错。你能提供一个你的df样本吗?
-
如果飞柱多于 3 对,你可以做
unite(价格和公斤列),然后gather(key = flynum),然后再separate(公斤和价格列)。在 mutate 中,总计将是group_by和sum。但只要 3 双以上就可以了。 -
@JonMinton,超过3列,请写下你解释的代码语法。谢谢
-
@TCZhang 我提供了一个样本。希望有帮助