Перегруппировать данные так, чтобы одна ячейка была заголовком - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу изменить свои данные. В настоящее время он выглядит как данные 1, и я хотел бы, чтобы он выглядел как данные2. По сути, я хотел бы переместить 'total' так, чтобы это был его собственный столбец, и я бы хотел переместить его n вместе с ним. Я использую R. Спасибо.

data1 <- data.frame (
  question = c("recommend", "recommend", "overall", "overall"),
  response = c("top box score", "total", "top box score", "total"),
  n = c(673, 784, 654, 784))


data2 <- data.frame (
  question = c("recommend", "overall"),
  response = c("top box score", "top box score"),
  n = c(673, 654),
  total = c(784, 784)) 

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Вы можете использовать data.table следующим образом:

library(data.table)
data2 <- setDT(data1)[response != "total"][data1, total := i.n, on = "question"]
0 голосов
/ 27 февраля 2020

Один из способов - отфильтровать данные для "total" строк, получить их в широком формате и объединить с исходными данными без "total" строк.

library(dplyr)
library(tidyr)

data1 %>% 
  filter(response != 'total') %>%
  left_join(data1 %>%
          filter(response == 'total') %>%
          pivot_wider(names_from = response, values_from = n), by = 'question')

#   question      response   n total
#1 recommend top box score 673   784
#2   overall top box score 654   784
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...