从拆分列访问

时间:2016-03-23 18:21:29

标签: r dataframe split

以下是我拆分列的方法:

12

输出:

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))))

但是,当我尝试访问&#39; boo.X1&#39;或者&#39; boo.X2&#39;我不能。例如,如果我们查看名称(),它只列出两个对象&#39; foo&#39;和&#39; boo&#39;。

   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

也许我错过了一些明显的东西,任何帮助都会受到赞赏 - 谢谢。

1 个答案:

答案 0 :(得分:1)

看一下 df 的结构(str),您可以看到 boo 将自己作为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$X1df$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