有人向我发送了一个没有 header 的 .txt 文件。此外,没有结构,因此所有行都遵循文件同一行上的前一行。
我唯一知道的是,每 16 个项目(用“,”分隔)在最终输出中应该有一行,因为每个图有 16 个变量或列。原始文件的每一行包含一天 438 个不同绘图的 16 个变量的所有测量值。原始文件总共包含 4015 行(天),我假设每行有 438x16 个项目(可能有 NA)。
我已成功将文件读取为:
x <- readLines("Data/meteodata.dat")
x <- as.data.frame(matrix(as.numeric(unlist(strsplit(x, ","))), ncol = 16, byrow = TRUE))
但是,我现在需要按图聚合变量分组,因此我最终只得到 438 行和 16 列,其中包含每个变量和图的平均值,而不是如此庞大的数据集。问题是这些列不包含用于分组的每个图的标识符。关键是这个困惑的数据集是由其他人从具有 438 行(每个图一个)的数据集 (y) 生成的,该数据集确实包含图标签,并且顺序相同:
> nrow(y)
[1] 438
> head(y)
CODE_PLOT CODE_COUNTRY
1 1 1
2 1 12
3 1 14
4 1 15
5 1 5
6 1 50
因此,困惑文件的每一行都以相同的顺序对应于“Y”的 CODE_COUNTRY 和 CODE_PLOT。
感谢并抱歉提供如此抽象的消息。
读取之前的文件示例:
48.25,4.25,1.989e+07,2.6,5.89,1.28,0.02,0,0,0.42,3575,0,-0.4,2.6,2.57,6.48,50,6,1.989e+07,3.55,5.42,2.31,0.42,0,0,0.15,2420,0,0.27,3.55,2,7.8
能够读取数据集后的示例:
> head(test)
lat long date temp.mean temp.max temp.min precip E0 ES0 ET0 radiation snow.depth
1 48.25 4.25 19890000 2.60 5.89 1.28 0.02 0.00 0.00 0.42 3575 0.00
2 50 6 19890000 3.55 5.42 2.31 0.42 0.00 0.00 0.15 2420 0.00
3 47.75 16.25 19890000 0.67 3.98 -0.92 0.63 0.08 0.00 0.53 5061 0.02
4 69.5 29 19890000 -13.63 -10.06 -20.20 0.10 0.00 0.00 0.02 70 16.56
5 41.75 13.5 19890000 2.05 8.79 -1.72 0.00 0.20 0.06 0.54 8206 0.10
6 47 8.75 19890000 -4.29 2.62 -7.97 0.00 0.00 0.00 0.21 7403 5.45
water.balance temp.mean2 wind P_hPa
1 -0.40 2.60 2.57 6.48
2 0.27 3.55 2.00 7.80
3 0.10 0.67 3.63 5.17
4 0.08 -13.63 3.65 1.78
5 -0.54 2.05 1.58 6.18
6 -0.21 -4.29 1.22 2.87
最佳答案
#messydata.txt : created by copying/pasting the line above into a textfile.
#Load Table into R
data1 <- read.table("messydata.txt", header=FALSE,sep=",", nrows=2, col.names=paste0("C", 1:16) )
#In col.names you can create the column names you want
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16
1 48.25 4.25 19890000 2.60 5.89 1.28 0.02 0 0 0.42 3575 0 -0.40 2.60 2.57 6.48
2 50.00 6.00 19890000 3.55 5.42 2.31 0.42 0 0 0.15 2420 0 0.27 3.55 2.00 7.80
#Option 1- Bind your two tables
cbind(data1, icp)
#option 2- Join tables if you have a key Variable "ID"
require(plyr)
newdata<- join(x=data1, y=icp, by = "ID")
#The ID can have a different name in x and y.
关于R:读取不带文件头的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28989997/