Dataframe R, добавить каждую вторую строку - PullRequest
0 голосов
/ 10 сентября 2018

Этот краткий пример иллюстрирует проблему. Я хочу добавить одну и ту же информацию Total и Value после каждой строки в моем фрейме данных. Правильный ID должен быть указан для каждой новой строки.

data.frame(ID=c('A1','A2'), one=c(1,2), two=c(3,4))
  ID one two
1 A1   1   3
2 A2   2   4

Окончательные результаты должны выглядеть следующим образом.

data.frame(ID=c('A1','A1','A2','A2'), one=c(1,'Total',2,'Total'), two=c(3,'Value',4,'Value'))
  ID   one   two
1 A1     1     3
2 A1 Total Value
3 A2     2     4
4 A2 Total Value

Я нашел несколько связанных с этим вопросов, но они на самом деле не отвечают на мой вопрос.

Ответы [ 2 ]

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

Базовая версия R будет

#Create a new dataframe with same rows with `ID` value from df
df1 <- data.frame(ID = df$ID, one='Total', two='Value')

#rbind both the dataframes
df2 <- rbind(df, df1)

#Order the new dataframe based on the ID to get alternating rows
df2[order(df2$ID), ]

#  ID   one   two
#1 A1     1     3
#3 A1 Total Value
#2 A2     2     4
#4 A2 Total Value

Данные

df <- data.frame(ID=c('A1','A2'), one=c(1,2), two=c(3,4))
0 голосов
/ 10 сентября 2018

Мне немного любопытно, насколько полезны такие преобразования, но это один из способов сделать это:

df <- data.frame(ID=c('A1','A2'), one=c(1,2), two=c(3,4))

library(tidyverse)
df %>%
  mutate(one='Total', two='Value') %>% 
  bind_rows(mutate_all(df, as.character)) %>% 
  arrange(ID, one)

Выход:

  ID   one   two
1 A1     1     3
2 A1 Total Value
3 A2     2     4
4 A2 Total Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...