我使用read.table()
读取.txt文件:
head(read.table("file1.txt",header=FALSE),4)
V1
1 1334523578
2 4332535535
3 7899854289
4 1435353587
如何将此列有效地拆分为三个不同的列?前三个数字落入column1,接下来的四个数字落入column2,最后一列将有三个数字。我试过了:
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 :(得分:0)
假设您的数据框名为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
- 函数 - 包:
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))