我有一系列以相同方式格式化的txt文件。前几行都是关于文件信息的。没有变量名。正如你所看到的,因子之间的空格不一致,但列是左对齐或右对齐的。我知道SAS可以直接读取这种格式的数据,不知道R是否提供类似的功能。
我试着用read.csv函数加载这些数据,我想把它们保存在一个有3列的data.frame中,但结果发现函数中的选项sep="\s"(多个空格)无法识别正则表达式。
所以我尝试先在一个变量中读取这些数据,然后使用substr函数将它们拆分如下。步骤1
Factor<-data.frame(substr(Share$V1,1,9),substr(Share$V1,9,14),as.numeric(substr(Share$V1,15,30)))
步骤2
但这很不明智,需要计算两者之间的间距。我想知道是否有任何方法可以直接将数据加载为三列。
> Factor
F T S
1 +B2P A 1005757219
2 +BETA A 826083789
我们可以使用read.table
将其读取为3列
read.table(text=as.character(Share$V1), sep="", header=FALSE,
stringsAsFactors=FALSE, col.names = c("FactorName", "Type", "Share"))
# FactorName Type Share
#1 +B2P A 1005757219
#2 +BETA A 826083789
#3 +E2P A 499237181
#4 +EF2P A 38647147
#5 +EFCHG A 866171133
#6 +IL1QNS A 945726018
#7 +INDMOM A 862690708
另一种选择是直接从文件中读取,skip
ping标题行并更改列名
read.table("yourfile.txt", header=FALSE, skip=1, stringsAsFactors=FALSE,
col.names = c("FactorName", "Type", "Share"))