Добавить дополнительную строку в фрейм данных на основе значений других строк - PullRequest
0 голосов
/ 31 мая 2019

У меня есть датафрейм с двумя строками данных.Я хотел бы добавить третью строку со значениями, представляющими разницу между двумя предыдущими.

Данные представлены в следующем формате:

Month   A   B   C   D   E   F
Jan     1   2   4   8   4   1
Feb     1   1   4   5   2   0

Я хотел бы добавить дополнительную строку свычисление, чтобы дать изменение за два месяца:

Month   A   B   C   D   E   F
Jan     1   2   4   8   4   1
Feb     1   1   4   5   2   0
Change  0   1   0   3   2   1

Я искал различные функции для добавления дополнительных строк, включая rbind и mutate, но я изо всех сил пытаюсь выполнить вычисление ввновь созданная строка.

Ответы [ 3 ]

2 голосов
/ 31 мая 2019

Поскольку это всего две строки, вы можете вычесть отдельные строки и rbind разницу

rbind(df, data.frame(Month = "Change", df[1, -1] - df[2, -1]))

#   Month A B C D E F
#1    Jan 1 2 4 8 4 1
#2    Feb 1 1 4 5 2 0
#3 Change 0 1 0 3 2 1
1 голос
/ 31 мая 2019
d1<-data.frame(Month = "Change" , df[1,-1] , df[2,-1])
newdf <- rbind(df,d1)

Это создаст новый фрейм данных с тем, что вам нужно

0 голосов
/ 31 мая 2019

Опция с tidyverse

library(tidyverse)
df1 %>% 
    summarise_if(is.numeric, diff) %>%
    abs %>%
    bind_rows(df1, .) %>%
    mutate(Month = replace_na(Month, "Change"))
#   Month A B C D E F
#1    Jan 1 2 4 8 4 1
#2    Feb 1 1 4 5 2 0
#3 Change 0 1 0 3 2 1

данные

df1 <- structure(list(Month = c("Jan", "Feb"), A = c(1L, 1L), B = 2:1, 
    C = c(4L, 4L), D = c(8L, 5L), E = c(4L, 2L), F = 1:0),
    class = "data.frame", row.names = c(NA, 
-2L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...