2016-03-23 2 views
0

Вот как я разделить столбец:Доступ из расщепленной колонки

df <- data.frame('foo' = rep(c('ab','ac'), each = 5)) 
df <- within(df, boo <- data.frame(do.call('rbind', strsplit(as.character(df$foo),'',fixed=FALSE)))) 

Выход:

foo boo.X1 boo.X2 
1 ab  a  b 
2 ab  a  b 
3 ab  a  b 
4 ab  a  b 
5 ab  a  b 
6 ac  a  c 
7 ac  a  c 
8 ac  a  c 
9 ac  a  c 
10 ac  a  c 

Однако, когда я пытаюсь получить доступ к 'boo.X1' или '' boo.X2 Я не могу. Например, если мы посмотрим на имена(), он отображает только два объекта: «foo» и «boo».

names(df) 
# [1] "foo" "boo" 

Возможно, мне не хватает чего-то очевидного, любая помощь будет оценена - спасибо.

ответ

1

Имея взглянуть на структуру (str) из ДФ вы можете увидеть, что бух itsself как data.frame.

> str(df) 
'data.frame': 10 obs. of 2 variables: 
$ foo: Factor w/ 2 levels "ab","ac": 1 1 1 1 1 2 2 2 2 2 
$ boo:'data.frame': 10 obs. of 2 variables: 
    ..$ X1: Factor w/ 1 level "a": 1 1 1 1 1 1 1 1 1 1 
    ..$ X2: Factor w/ 2 levels "b","c": 1 1 1 1 1 2 2 2 2 2 

Таким образом, вы можете получить доступ к их df$boo$X1 и df$boo$X1

если вы хотите присоединить BOO столбцы, которые можно использовать cbind следующим образом:

df <- data.frame('foo' = rep(c('ab','ac'), each = 5)) 
df <- cbind(df, do.call('rbind', strsplit(as.character(df$foo),'',fixed=FALSE))) 
names(df) <- c("foo", "boo_1", "boo_2") 

, который дает вам

foo boo_1 boo_2 
1 ab  a  b 
2 ab  a  b 
3 ab  a  b 
4 ab  a  b 
5 ab  a  b 
6 ac  a  c 
7 ac  a  c 
8 ac  a  c 
9 ac  a  c 
10 ac  a  c 
+0

Благодарим за помощь! –

+0

Они также могут делать 'do.call (data.frame, df)', если у них уже есть данные в этой структуре. – A5C1D2H2I1M1N2O1R2T1

Смежные вопросы