【问题标题】:Accessing from a split column从拆分列访问
【发布时间】:2016-03-23 18:21:29
【问题描述】:

这是我拆分列的方法:

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”时,我无法访问。例如,如果我们查看 names(),它只列出了两个对象 'foo' 和 'boo'。

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

也许我遗漏了一些明显的东西,任何帮助将不胜感激 - 谢谢。

【问题讨论】:

    标签: r dataframe split


    【解决方案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
    

    【讨论】:

    • 感谢您的帮助!
    • 如果他们已经拥有该结构中的数据,他们也可以使用do.call(data.frame, df)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2013-06-26
    • 1970-01-01
    相关资源
    最近更新 更多