【问题标题】:R: split multiple value/key pairs in data.frame fieldR:在 data.frame 字段中拆分多个值/键对
【发布时间】:2012-01-27 18:41:00
【问题描述】:

我有一个包含如下字段的 data.frame:

:6:Description_C
:3:Description_A:2:Description_B:1:Description_C
:2:Description_C:1:Description_B:1:Description_A:1:Description_D:1:Description_E
:3:Description_B:3:Description_A

前面的数字,用冒号括起来,是在 data.frame 的那个条目中看到的描述的次数,总共 6 次。如果有 :6:Description_X 则表示所有 6 个计数都用于该描述,如果没有,则将其拆分为不同的计数,彼此相邻。

我想将此字段转换为每个描述的计数的键/值散列,这样我就可以对所有计数的总比例进行条形图,而且我可以绘制这些与 data.frame 中的其他因素相结合的比例。

编辑:查看一下 colsplit 的文档,可能人们会告诉我,我需要为每个描述创建一个新列,因为我总共只有大约 8 个描述。不过,还没想好怎么做。

如何在 R 中做到这一点?

【问题讨论】:

  • reshape库尝试colsplit
  • 我们需要处理第三行中的双分号还是我们可以编辑掉的东西??
  • 对不起,双分号的错别字
  • 查看一下colsplit 的文档,可能人们会告诉我,我需要为每个描述创建一个新列,并填写看到的次数。因为我总共只有大约 8 个描述。那应该不会太糟糕。不过,还没想好怎么做。

标签: r split dataframe key-value


【解决方案1】:

我不确定您希望“键:值哈希”的结构是什么,但这会提取字符串及其相关的数字代表:

inp <- readLines(textConnection(
 ":6:Description_C
 :3:Description_A:2:Description_B:1:Description_C
 :2:Description_C:1:Description_B:1:Description_A:1:Description_D:1:Description_E
 :3:Description_B:3:Description_A")
        )
 inp2 <- sapply( strsplit(inp, ":"), "[", -1) # drop the leading empty strings
 reps <-  lapply(inp2, function(x) as.numeric(x[ seq( 1, length(x) , by=2)]))
 values <- lapply(inp2, function(x) x[ seq( 2, length(x) , by=2)])

lapply(reps, barplot) # Probably needs to work but this demonstrates feasibility

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 2017-01-15
    • 2011-06-22
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    相关资源
    最近更新 更多