以下是我拆分列的方法:
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
也许我错过了一些明显的东西,任何帮助都会受到赞赏 - 谢谢。
答案 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$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