2017-09-21 36 views
1

我在爲r的以下數據幀如何打破不同行逗號分隔值r中

names  values 
    abc   34 
    def   12,23 
    rty   34,67,89 

我想要的數據幀將

names  values 
    abc   34 
    def_1  12 
    def_2  23 
    rty_1  34 
    rty_2  67 
    rty_3  89 

我能值在不同的分離行,但我怎樣才能改變names列所需

splitdat <- do.call("rbind", strsplit(df$values[3], ",")) 
    splitdat <- data.frame(apply(splitdat, 2, as.numeric)) 
    colnames(splitdat)[1] <- "column1" 
+0

非常接近的重複https://stackoverflow.com/questions/13773770/split-comma-分隔列分隔行 – thelatemail

回答

2

我們可以用separate_rows

library(dplyr) 
library(tidyr) 
separate_rows(df1, values, sep=",") %>% 
     mutate(names = make.unique(names, sep="_")) 

或者創建一個由組中的序列列,然後paste

separate_rows(df1, values, sep=",") %>% 
     group_by(names) %>% 
     mutate(names1 = if(n()>1) paste(names, row_number(), sep="_") else names) %>% 
     ungroup() %>% 
     select(names1, values) %>% 
     rename(names= names1) 
+0

我只想逗號分隔在不同的行中。上面的代碼也打破了由空格分隔的單元格。我怎麼能編號'abc_1,abc_2',如果它有兩個逗號分隔的條目 – Neil

+1

我通過'seperate_rows(d1,sep =「,」)' – Neil

+0

得到它我怎樣才能實現在不同行中分隔的行被命名爲'abc_1,abc_2'? – Neil