R:在data.frame字段中拆分多个值/密钥对

时间:2012-01-27 18:41:00

标签: r split dataframe key-value

我有一个包含如下字段的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

前面的数字(由冒号包围)是总数为6的次数,在data.frame中的该条目中可以看到描述。如果有:6:Description_X表示所有6个计数都用于该描述,如果不是,则将其拆分为不同的计数,彼此相邻。

我想将此字段转换为每个描述的计数数量的键/值哈希,以便我可以对所有计数的总比例进行条形图,但也可以用我可以绘制这些的方式比例与data.frame中的其他因素结合使用。

编辑:看一下colsplit的文档,人们会告诉我的可能是我需要为每个描述添加一个新列,因为我总共只有大约8个描述。但是,还没弄明白怎么做。

我怎么能在R?中做到这一点?

1 个答案:

答案 0 :(得分:1)

我不确定你想要“key:value hash”的结构,但这会提取字符串及其相关的数字代表:

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