Как выбрать одно значение data.frame в столбце списка с R? - PullRequest
1 голос
/ 08 мая 2020

У меня есть data.frame, содержащий столбец типа. Список содержит data.frame размером 1x3. Мне нужно только одно значение из этого списка. Таким образом мой data.frame сгладится, чтобы я мог записать csv.

Как мне выбрать один элемент из вложенного data.frame (см. Второй столбец)? screenshot

Вот вложенный столбец. Я бы предоставил данные, но не могу сгладить их для write_csv.

enter image description here

результат dput:

structure(list(id = c("1386707", "1386700", "1386462", "1386340", 
"1386246", "1386300"), fields.created = c("2020-05-07T02:09:27.000-0700", 
"2020-05-07T01:20:11.000-0700", "2020-05-06T21:38:14.000-0700", 
"2020-05-06T07:19:44.000-0700", "2020-05-06T06:11:43.000-0700", 
"2020-05-06T02:26:44.000-0700"), fields.customfield_10303 = c(NA, 
NA, 3, 3, NA, NA), fields.customfield_28100 = list(NULL, structure(list(
    self = ".../rest/api/2/customFieldOption/76412", 
    value = "New Feature", id = "76412"), .Names = c("self", 
"value", "id"), class = "data.frame", row.names = 1L), structure(list(
    self = ".../rest/api/2/customFieldOption/76414", 
    value = "Technical Debt", id = "76414"), .Names = c("self", 
"value", "id"), class = "data.frame", row.names = 1L), NULL, 
    structure(list(self = ".../rest/api/2/customFieldOption/76411", 
        value = "Maintenance", id = "76411"), .Names = c("self", 
    "value", "id"), class = "data.frame", row.names = 1L), structure(list(
        self = ".../rest/api/2/customFieldOption/76412", 
        value = "New Feature", id = "76412"), .Names = c("self", 
    "value", "id"), class = "data.frame", row.names = 1L))), row.names = c(NA, 
6L), class = "data.frame", .Names = c("id", "fields.created", 
"fields.customfield_10303", "fields.customfield_28100"))

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Я нашел способ сделать это.

Во-первых, вместо изменения данных я добавил столбец с изменением. Затем непосредственно выберите тот же столбец из всех вложенных списков. Затем я преобразовал столбец списка в вектор. Наконец, я очистил его, удалив другие столбцы.

Вроде работает. Я еще не знаю, как он будет обрабатывать несколько строк во вложенном df.

   dat <- sample_dat %>% 
   mutate(cats = sapply(nested_col, `[[`, 2)) %>% 
   mutate(categories = sapply(cats, toString)) %>% 
   select(-nested_col, -cats)

Связанные

0 голосов
/ 09 мая 2020
library(dplyr)
library(tidyr)

df <- tibble(Group=c("A","A","B","C","D","D"),
       Batman=1:6,
       Superman=c("red","blue","orange","red","blue","red"))

nested <- df %>%
  nest(data=-Group)

unnested <- nested %>%
  unnest(data)

Вложенность и деактивация данных с помощью tidyr

library(purrr)
nested %>%
  mutate(data=map(data,~select(.x,2))) %>%
  unnest(data)

выберите с помощью мурлыка, но лаппи, как вы это сделали, это нормально, это просто для эстетики;)

...