Создать несколько datafame - PullRequest
       2

Создать несколько datafame

1 голос
/ 06 апреля 2020

Я намерен создать несколько фреймов данных из данных, как показано ниже:

ID Time Ethnicity LDL  HDL ....
1   1   black
2   2   white
3   1   black
4   2   White

каждый фрейм данных представляет собой средние значения столбца LDL, HDL, ... в 4 строках, отображаемых в данные. Я использовал следующий код, но проблема в том, что все кадры данных идентичны. Я имею в виду DF[[1]] - это то же самое, что и DF[[2]], ... DF[[15]]. Буду признателен, если вы поможете мне найти решение.

dv=c(names(data[,4:15]))

library(ggplot2)
require(plyr)

for (i in 1:12) {
    DF[[i]] = ddply(data, c("Time", "Ethnicity"), summarize, 
    Mean = mean(data[[paste(dv[i])]], na.rm = T))
}

1 Ответ

0 голосов
/ 06 апреля 2020

plyr равно на пенсии , вы можете использовать dplyr. Когда вы делаете mean(data[[paste(dv[i])]], вы поднабораете весь столбец и не относитесь к группам. Следовательно, вы получаете одинаковое среднее значение для всех значений в DF[[1]], DF[[2]] et c.

library(dplyr)

output_df <- data %>% 
               group_by(Time, Ethnicity) %>% 
               summarise_at(4:15, mean, na.rm = TRUE) %>% 
               ungroup

Если вам нужен список данных, вы можете использовать group_split:

DF <- output_df %>% group_split(Time, Ethnicity)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...