2015-06-16 148 views
0

我已經包含用於單個變量(Problemas.habituales)幾個值的following dataframe(見下文)拆分多個值

> read.csv("http://pastebin.com/raw.php?i=gnWRqJnY") 
    Nombre.barrio        Problemas.habituales 
1   Actur Robos con violencia, Agresiones, Otros problemas 
2   Actur         Ningún problema 
3  Centro     Robos con violencia, Agresiones 
4  San Pablo         Ningún problema 
5  San Pablo         Ningún problema 
6  Delicias      Hurtos o robos sin violencia 

這樣做的原因結構是,我創建了一個在線調查問卷,該問卷接受同一問題的多個答案,但數據存儲的方式是一個問題,因爲沒有先前操作數據框的方法,無法創建顯示每個鄰域內所有常見問題的barplot。

不幸的是,我不知道如何操作數據框(我需要它在數據框上,因爲我以後需要使用ggplot2,它不接受數據表),每一行都包含一個值爲變量「Problemas.habituales」。

+0

我已經看到了這個問題已經被打上這樣做一個-1,我想知道爲什麼,因爲我首先搜索duckduckgo,然後在stackoverflow,並沒有發現任何重複(除了容易解決,如果你知道如何做到這一點,但我不認爲作爲新手是壞事)。 – ccamara

+1

檢查[這](http://stackoverflow.com/questions/13773770/split-comma-separated-column-into-separate-rows)應該是有幫助的 –

回答

2

您可以使用splitstackshape

library(splitstackshape) 
cSplit(DF, "Problemas habituales", ",", direction = "long") 

# Nombre barrio   Problemas habituales 
#1:   Actur   Robos con violencia 
#2:   Actur     Agresiones 
#3:   Actur    Otros problemas 
#4:   Actur    Ningún problema 
#5:  Centro   Robos con violencia 
#6:  Centro     Agresiones 
#7:  San Pablo    Ningún problema 
#8:  San Pablo    Ningún problema 
#9:  Delicias Hurtos o robos sin violencia 
3
library(data.table) 
DF <- fread("http://pastebin.com/raw.php?i=gnWRqJnY") 
setnames(DF, make.names(names(DF))) 
DF <- DF[, .(Problemas.habituales = unlist(strsplit(Problemas.habituales, ",", 
                fixed = TRUE))), by = Nombre.barrio] 
setDF(DF) 

(我假設你沒有看到編碼與您的locale問題。)

+0

謝謝,它的工作很棒@Roland – ccamara

+0

嗡嗡聲... aparently doesn如果我使用read.csv而不是fread ...仍然不能解決問題,因爲如果我更改爲fread,它會打破我在數據幀的其他部分完成的大部分工作,因爲它們不同列名(read.csv增加,而不是單詞之間的空格) – ccamara

+0

我想我發現了這個問題...... fread創建了一個數據表,而read.csv創建了一個數據框,這正是我所需要的。有什麼辦法可以使它與數據框一起工作嗎? – ccamara