2014-06-14 3 views
0

прочитать файл .txt с помощью read.table():Split колонки в разные столбцы

head(read.table("file1.txt",header=FALSE),4) 
     V1 
1 1334523578 
2 4332535535 
3 7899854289 
4 1435353587 

Как я могу разделить эту колонку эффективно трех разных колонках? Первые три цифры попадают в столбец 1, следующие четыре цифры в столбец2, а последний столбец будет иметь три цифры. Я пробовал:

as.data.frame(matrix(as.numeric(sapply(data.frame(rbind(c(1,4,8),c(3,7,10))), function(x) substr(d1$V1, x[1], x[2]))),4,3)) 

    V1 V2 V3 
1 133 4523 578 
2 433 2535 535 
3 789 9854 289 
4 143 5353 587 

Но, это не выглядит хорошо.

ответ

0

Предположив ваш dataframe называется df, вы можете сделать это также с substr:

df2 <- data.frame(V1 = substr(df$V1, 1, 3), 
        V2 = substr(df$V1, 4, 7), 
        V3 = substr(df$V1, 8, 10)) 

Другим вариантом было бы использовать separate -функции из tidyr -package:

library(tidyr) 
df2 <- separate(df, V1, c('V1','V2','V3'), sep = c(3,7)) 

Оба опции дают:

> df2 
    V1 V2 V3 
1 133 4523 578 
2 433 2535 535 
3 789 9854 289 
4 143 5353 587 

Используемые данные:

df <- structure(list(V1 = c(1334523578, 4332535535, 7899854289, 1435353587)), 
       .Names = "V1", class = "data.frame", row.names = c(NA, -4L)) 
Смежные вопросы