Как получить таблицу с сгруппированными данными? - PullRequest
0 голосов
/ 10 октября 2018

У меня есть много факторов с измерениями, например:

measurement1Height;
[1] 176 177 180 181 177
Levels: 176 177 180 181

measurement2Height;
[1] 176 177 180 181 177
Levels: 176 177 180 181

measurement3Height;
[1] 176 177 180 181 176
Levels: 176 180 181

measurement1Weight;
[1] 73 79 85 85 80
Levels: 73 79 80 85

measurement2Weight;
[1] 75 80 84 85 80
Levels: 75 80 84 85

measurement3Weight;
[1] 74 79 85 84 76
Levels: 74 76 79 84 85

measurement1Height <- factor(c(176, 177, 180, 181, 177));
measurement2Height <- factor(c(176, 177, 180, 181, 177));
measurement3Height <- factor(c(176, 177, 180, 181, 176));
measurement1Weight <- factor(c(73, 79, 85, 85, 80));
measurement2Weight <- factor(c(75, 80, 84, 85, 80));
measurement3Weight <- factor(c(74, 79, 85, 84, 76));

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

        Measurement1    Measurement2    Measurement3    
        Height  Weight  Height  Weight  Height  Weight
Person1 176     73      176     75      176     74
Person2 177     79      177     80      177     79
Person3 180     85      180     84      180     85
Person4 181     85      181     85      181     84
Person5 177     80      177     80      176     76  

Есть ли способсделать это быстро?

1 Ответ

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

Вот быстрое и грязное решение с использованием dplyr.

library(dplyr)

# your data
measurement1Height <- factor(c(176, 177, 180, 181, 177))
measurement2Height <- factor(c(176, 177, 180, 181, 177))
measurement3Height <- factor(c(176, 177, 180, 181, 176))
measurement1Weight <- factor(c(73, 79, 85, 85, 80))
measurement2Weight <- factor(c(75, 80, 84, 85, 80))
measurement3Weight <- factor(c(74, 79, 85, 84, 76))

# operations
data_names <- as.list(sort(paste0(paste0("measurement", 1:3), rep(c("Height", "Weight"), each=3))))
data <- lapply(data_names, get)
names(data) <- data_names
data <- data %>%
  bind_rows() %>%
  mutate(Person = paste("Person", 1:nrow(bind_rows(data)))) %>%
  select(Person, everything())

# here's your new data
data

В конце концов, я бы рекомендовал использовать целые и числовые значения вместо факторов (в зависимости от цели, которую вы ставите).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...