【发布时间】:2021-08-18 19:46:35
【问题描述】:
我正在为多个数据文件的导入/准备而苦苦挣扎。 我研究中的每个参与者都有多个 .txt 格式的数据文件。我想创建一个包含所有参与者数据的主数据文件。
我想出了如何使用以下代码对我的数据子集执行此操作:
setwd("...")
data1 = read.delim("Data-2021-5-11-16-17-49.txt", header = F, sep=";")
data2 = read.delim("Data-2021-5-11-16-18-6.txt", header = F, sep=";")
data3 = read.delim("Data-2021-5-11-16-18-19.txt", header = F, sep=";")
data1 = as.data.frame(t(data1))
colnames(data1) = c("finalBarAngle", "finalBarAngleRelativeToCamera", "HeadTilt", "HeadTranslation", "BarNDisks", "BarImageRatio", "DiskBarRatio", "BarDepth", "BarColor", "BarTopColor", "BarAngle", "BarRight", "BarLeft", "BarReady", "BarStepAngle", "KeyRepeatedDelay", "BarStepAngle", "ImageFile", "ImageSize", "ImageSizeDepthRatio", "ImageAngle", "ImageSpeed", "ChromaKey", "BackgroundColor")
data1 = data1[-1,]
data2 = as.data.frame(t(data2))
colnames(data2) = colnames(data1)
data2 = data2[-1,]
data3 = as.data.frame(t(data3))
colnames(data3) = colnames(data1)
data3 = data3[-1,]
data = rbind(data1,data2,data3)
这对我有用并生成我想要的主数据文件。但是,由于每个参与者都有 80 个这样的数据文件,因此采用这种方法会非常麻烦。因此,我正在寻找一段可以自动执行此操作的代码?
我尝试使用 list.files 和 lapply,但没有得到我想要的结果。问题是列表的内容成为一个因素,我首先需要转置列表中的数据框:
mypath = "..."
txt_files_ls = list.files(path=mypath, pattern="*.txt")
txt_files_df <- lapply(txt_files_ls, function(x) {read.table(file = x, header = F, sep =";")})
transposeList <- lapply(txt_files_df,function(x){t(x)[-1,]})
combined_df <- do.call("rbind", lapply(transposeList, as.data.frame))
用于重现问题的 .txt 文件之一的示例数据(所有输入文件都遵循此结构):
finalBarAngle;10
finalBarAngleRelativeToCamera;15
HeadTilt;True
HeadTranslation;True
BarImageRatio;8
DiskBarRatio;0.8
DiskBarRatio;0.25
BarDepth;2
BarColor;RGBA(0.000, 1.000, 0.000, 1.000)
BarTopColor;RGBA(1.000, 0.000, 1.000, 1.000)
BarAngle;23
BarRight;Keypad6
BarLeft;Keypad0
BarReady;Keypad5
BarStepAngle;0.5
BarStepAngle;750
BarStepAngle;0.1
KeyRepeatDelay;Frame.png
BarRepeatedStep;500
ImageFile;0.6666667
ImageDepth;-28
ImageSizeDepthRatio;0
ImageAngle;RGBA(0.000, 0.000, 0.000, 1.000)
ImageSpeed;RGBA(0.000, 0.000, 0.000, 1.000)
请注意,我的原始文件中的变量名称不正确(有一些重复,因此缺少一些其他名称)。
【问题讨论】:
-
你试过
read.table(stringsAsFactors = FALSE)吗?
标签: r list dataframe merge txt