Умножить две строки из одного и того же кадра данных - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть фрейм данных, в котором я хочу вычислить новую строку на основе двух существующих строк, умножив их.Структура моего фрейма данных следующая:

structure(list(month = c("mazda", "yamaha", "car"), april = c(11, 
12, 0.1), may = c(14, 15, 0.5)), row.names = c(NA, -3L), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), vars = "month", drop = TRUE, indices = list(
    2L, 0L, 1L), group_sizes = c(1L, 1L, 1L), biggest_group_size = 1L, labels = structure(list(
    month = c("car", "mazda", "yamaha")), row.names = c(NA, -3L
), class = "data.frame", vars = "month", drop = TRUE))

Я хочу добавить строку total, которая будет являться продуктом mazda и car.И если машина ряда не найдена, она должна быть 0 в новом ряду total.Желаемый результат, который я пытаюсь достичь:

# A tibble: 4 x 3
# Groups:   month [4]
  month  april   may
  <chr>  <dbl> <dbl>
1 mazda   11    14  
2 yamaha  12    15  
3 car      0.1   0.5
4 total    1.1   7  

1 Ответ

0 голосов
/ 18 сентября 2018

Это действительно звучит / выглядит как проблема XY. Я бы посоветовал переосмыслить ваш общий дизайн кода и данных. Например, почему столбец 1 помечен month, но содержит записи "mazda", "yamaha", "car" и "total"?

За все, что вы стоите, вы можете воспроизвести ожидаемый результат с

rbind(df, c(month = "total", df[df$month == "mazda", -1] * df[df$month == "car", -1]))
## A tibble: 4 x 3
## Groups:   month [4]
#  month  april   may
#  <chr>  <dbl> <dbl>
#1 mazda   11    14
#2 yamaha  12    15
#3 car      0.1   0.5
#4 total    1.1   7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...