Список имен фреймов данных на основе значений в строках - PullRequest
0 голосов
/ 28 января 2019

Я создал список фреймов данных из этого фрейма данных df

structure(list(ï..Name = structure(c(5L, 5L, 12L, 6L, 10L, 13L, 
7L, 1L, 4L, 2L, 9L, 8L, 3L, 11L), .Label = c("Alex", "Alice", 
"Greg", "Jay", "Jim", "Mick", "Mike", "Patrick", "Reese", "Sarah", 
"Simon", "Sue", "Timmy"), class = "factor"), Partner = structure(c(7L, 
9L, 7L, 11L, 10L, 2L, 1L, 1L, 4L, 8L, 5L, 6L, 3L, 3L), .Label = c("Alan", 
"Alex", "Britney", "Dalton", "Jeff", "Mary", "Peggy", "Percy", 
"Sue", "Susan", "Tara"), class = "factor"), Group1 = structure(c(1L, 
2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L), .Label = c("a", 
"b", "c", "d", "e", "f", "g"), class = "factor"), Group2 = structure(c(1L, 
2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L), .Label = c("Alpha", 
"Bravo ", "Charlie", "Delta", "Echo", "Foxtrot", "Gamma"), class = "factor")), class = "data.frame", row.names = c(NA, 
-14L))

, используя этот код

list_df=df %>% 
  split(group_indices_(df, .dots =c("Group1","Group2"))) 

Сначала я пытаюсь присвоить имена каждому объекту фрейма данных путем объединениякоэффициент внутри Group1 плюс Group2.Затем я пытаюсь установить подмножество каждого из фреймов данных в list_df, чтобы в столбце 1 были только столбцы Name, а в столбце 2 - Partner.

Мне удалось подналожить фреймы данных с помощьюделая это

sub_toy=lapply(list_df, select,ï..Name, Partner)

Что я не могу понять, так это как на самом деле назвать список объектов внутри, прежде чем я сделаю это подмножество, чтобы я знал, к какой комбинации групп принадлежит каждый из фреймов данных

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Вот быстрое решение, которое я придумал.Надеюсь, получит то, что вы ищете:

n <-  names(list_df)

for(ii in 1:length(list_df)) {
    n[ii] = paste(as.character(unique(list_df[[ii]][[3]])),
    "_",
    as.character(unique(list_df[[ii]][[4]])), 
    sep = "")
}

names(list_df) <- n

l <- lapply(list_df, function(x) {x[,-c(3,4)]}) #or your function call, too
0 голосов
/ 28 января 2019

вы ищете любой из следующих

split(df[1:2], df[3:4], TRUE)

split(df[1:2], do.call(paste, df[3:4]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...