数据集中特定部分的R加载



我过去常常使用以下代码将数据加载到各个数据帧中:

filenames = list.files(path=path, pattern=".txt") #maakt een vector 'filenames' met alle .txt files in de betreffende folder
## 2.2 Data inladen
colnamesfull = c("time","v","a","t1","t2","t3","t4","t5","t6","t7","t8")
for(i in filenames){
filepath = file.path(path, paste(i, sep=""))
assign(i, read.table(filepath,
skip= 20, 
col.names= colnamesfull, 
sep=","))}

到目前为止,我已经发现将这些txt文件直接加载到列表中更有效,并使用以下代码做到了这一点:

filenames = list.files(path=path, pattern=".txt")
fn <- paste(path,filenames,sep="/")
mylist <- lapply(fn, read.table, stringsAsFactors=FALSE)

然而,我仍然想对以前的方法进行修改。即:

  • 删除前20行,它们是文本而非数据
  • 在colnamesfull中向列添加名称

我该怎么做?我试过在lapply中填写read.table,但没有用。

当加载到mylist:时,数据帧看起来是这样的

c("description=Peilopzet_Twentekanaal", "reference_heater_voltage=11", 
"pulsetime=25.0", "measuretime=300", "filebasename=SD07_TWK_", 
"measureinterval=1800", "nosleep=0", "sampletime=1", "IP=?.?.?.?", 
"Battery=15.86V", "Firmware=91", "Bootreason=BootReason(poweron=False,", 
"user=False,", "rtc=True,", "timeout=False)", "Sensorfirmware=Rev:", 
"98", "Datetime=2019-08-22", "00:30:04", "DatetimeFromNTP=True", 
"Heatervoltage=15.860000000000001", "Heaterduty=0.4810375781785452", 
"Compass=-317", "639", "42", "ApplicationVersion=trunk-r47", 
"ApplicationDate=2017-12-06", "11:17:33", "+0100", "2.0,14.820,1.500,14.61,14.63,14.63,14.65,14.65,14.63,14.64,14.60", 
"3.9,14.804,1.476,14.61,14.62,14.63,14.65,14.65,14.63,14.64,14.60", 
"5.8,14.820,1.500,14.61,14.62,14.63,14.65,14.65,14.63,14.64,14.60"
)

我已经设法使用了skip,但这不起作用,因为之后我无法让col.names工作。数据集看起来是这样的,跳过使用如下:

filenames = list.files(path=path, pattern=".txt")
fn <- paste(path,filenames,sep="/")
mylist <- lapply(fn, read.table, stringsAsFactors=FALSE, skip=21)

数据集的图像

> mylist[[1]]
V1
1     2.0,14.820,1.500,14.61,14.63,14.63,14.65,14.65,14.63,14.64,14.60
2     3.9,14.804,1.476,14.61,14.62,14.63,14.65,14.65,14.63,14.64,14.60
3     5.8,14.820,1.500,14.61,14.62,14.63,14.65,14.65,14.63,14.64,14.60

当我通过dput((放置数据集时,V1不会显示

> dput(test[0:5,])
c("2.0,14.808,1.478,14.63,14.64,14.65,14.66,14.67,14.65,14.65,14.62", 
"3.9,14.808,1.472,14.63,14.64,14.65,14.66,14.67,14.65,14.65,14.62", 
"5.9,14.816,1.491,14.63,14.64,14.65,14.66,14.67,14.65,14.65,14.62", 
"7.8,14.816,1.490,14.63,14.64,14.65,14.66,14.67,14.65,14.65,14.62", 
"9.7,14.808,1.470,14.62,14.64,14.65,14.66,14.67,14.65,14.65,14.62"

我该如何摆脱把一切搞砸的"V1"?

如Roland评论:

mylist <- lapply(fn, read.table, stringsAsFactors=FALSE, skip= 20, col.names= colnamesfull, sep=",")

相关内容

最新更新