2013-04-27 3 views
-5

Вот мой фрейм данных.Разделить 1 колонку на 2 столбца в Dataframe

> data 
     Manufacturers 
1 Audi,RS5 
2 BMW,M3 
3 Cadillac,CTS-V 
4 Lexus,ISF 

Так что я хотел бы разделить производителей и моделей, как это,

> data 
    Manufacturers  Models 
1 Audi    RS5 
2 BMW     M3 
3 Cadillac   CTS-V 
4 Lexus    ISF 

Я был бы признателен за любую помощь по этому вопросу. Большое спасибо.

+4

никакой попытки не показана. –

+1

Если у меня Google ваш заголовок, второе попадание приводит к strsplit, и это то, что вам нужно, я думаю. –

+1

@ RomanLuštrik, в этом случае я бы подумал: «read.csv» будет достаточно: 'read.csv (text = as.character (data $ Manufacturers), header = FALSE)'. Не знаю, является ли это более эффективным, чем 'strsplit'. – A5C1D2H2I1M1N2O1R2T1

ответ

6

Некоторые данные образца. Вы можете использовать вектор символов, но я буду использовать фрейм данных, чтобы соответствовать вашему примеру:

df <- data.frame(Manufacturers = c("Ducati,Diavel", "Honda,Goldwing", 
            "BMW,R1200GS", "Harley-Davidson,Fat Boy"), 
       stringsAsFactors = FALSE) 

Используйте strsplit() для разделения строк. Обратите внимание, что для этого требуется вектор символа (не фактор). Strsplit() возвращает список объекты:

list <- strsplit(df$Manufacturers, ",") 

Transform списка в кадр данных и установить соответствующие имена столбцов:

library("plyr") 
df <- ldply(list) 
colnames(df) <- c("Manufacturer", "Model")