Доступ к элементу вложенного списка для функций, примененных к фрейму данных - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь разбить строку на один столбец ...

> df.arpt
          arpt
1    CMH 39402
2    IAH 97571
3    DAL 67191
4    HOU 07614
5    OKC 11127

... и разбить ее на два новых столбца с результатом, который выглядит следующим образом ...

> df.arpt
          arpt   arptCode    arptID
1    CMH 39402        CMH     39402 
2    IAH 97571        IAH     97571   
3    DAL 67191        DAL     67191
4    HOU 07614        HOU     07614
5    OKC 11127        OKC     11127

Я действительно хочу, чтобы что-то подобное было возможно ...

> df.arpt$arptCode <- strsplit(df.arpt$arpt, " ")[[...]][1]
> df.arpt$arptID   <- strsplit(df.arpt$arpt, " ")[[...]][2]

... где ... в коде представляет "для каждой записи во фрейме данных".

Есть предложения, как это сделать? (Я бы хотел придерживаться базового R / «из коробки» R, а не пакетов более высокого уровня.) Думаю ли я об этом правильно в R?

Ответы [ 3 ]

0 голосов
/ 23 октября 2019

Как насчет этого:

df<-data.frame(arpt =c("CMH 39402", "IAH 97571", "DAL 67191", "HOU 07614", "OKC 11127")) 
tidyr::separate(df, arpt, into = c("artpCode", "arptID"))
0 голосов
/ 27 октября 2019

Поскольку все строки имеют фиксированную длину, я смог применить вместо них функцию substr, чтобы обойти проблему. Однако я до сих пор не знаю, каким было бы решение, если бы результатом функции был список.

0 голосов
/ 23 октября 2019

Если значения arptCode являются именами строк, вы можете преобразовать их в столбец.

library(tidyverse)
df.arpt %>% 
  rownames_to_column(var = "arptCode")

Если они не являются именами строк, вы можете использовать separate.

library(tidyverse)
df.arpt %>% 
  separate(arpt, into = c('arptCode', 'aprtID'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...