我正在尝试转换我在txt文件中的数据:
4.0945725440979;4.07999897003174;4.0686674118042;4.05960083007813;4.05218315124512;...
到列(表),其中值由制表符分隔。
4.0945725440979
4.07999897003174
4.0686674118042...
到目前为止,我试过
mydata <- read.table("1.txt", header = FALSE)
separate_data<- strsplit(as.character(mydata), ";")
但它不起作用。在这种情况下,separate_data
仅包含1个元素:
[[1]]
[1] "1"
答案 0 :(得分:0)
基于OP,没有直接说明原始数据文件是否包含单个变量的多个观察值,或者应该分解为n元组。由于OP确实声明read.table导致单行中s /他希望它包含多行,我们可以得出结论,正确的技术是使用scan()
,而不是read.table()
。
如果原始数据文件中的数据代表单个变量,则@docendo在评论中发布的解决方案无需额外工作即可运行。否则,需要额外的工作来整理数据。
这是一种使用scan()
将文件读入矢量的方法,并将其分解为包含5个变量的观测值。
rawData <- "4.0945725440979;4.07999897003174;4.0686674118042;4.05960083007813;4.05218315124512;4.0945725440979;4.07999897003174;4.0686674118042;4.05960083007813;4.05218315124512"
value <- scan(textConnection(rawData),sep=";")
columns <- 5 # set desired # of columns
observations <- length(aVector) / columns
observation <- unlist(lapply(1:observations,function(x) rep(x,times=columns)))
variable <- rep(1:columns,times=observations)
data.frame(observation,variable,value)
...和输出:
> data.frame(observation,variable,value)
observation variable value
1 1 1 4.094573
2 1 2 4.079999
3 1 3 4.068667
4 1 4 4.059601
5 1 5 4.052183
6 2 1 4.094573
7 2 2 4.079999
8 2 3 4.068667
9 2 4 4.059601
10 2 5 4.052183
>
此时,数据可以转换为带有reshape2::dcast()
的宽幅整洁数据集。
请注意,此解决方案要求原始数据文件中的数据值数量可以被变量数量整除。