
所以我需要做的是用前 9 行中所述的值創建列......例如,單元格 A1 處的值應為 E9,而 B1 處的值應為 E10、E11、E12、E13, ...
uj5u.com熱心網友回復:
偽造的 CSV 資料,存盤為"foo.csv":
REG,CO
UF,DF
ESTACAO,BRASILIA
Date,Hora,PRECIP,TEMP
01/01/2020,0000 UTC,0,20
01/01/2000,0100 UTC,0,19.5
01/01/2000,0200 UTC,0,21
閱讀它,找到“真正的”標題行,然后繼續:
alldat <- readLines("foo.csv")
alldat
# [1] "REG,CO" "UF,DF" "ESTACAO,BRASILIA" "Date,Hora,PRECIP,TEMP"
# [5] "01/01/2020,0000 UTC,0,20" "01/01/2000,0100 UTC,0,19.5" "01/01/2000,0200 UTC,0,21"
ind <- grep("Hora", alldat)
ind
# [1] 4
從這里,我們可以確定標題資訊和其余資料:
header <- as.data.frame(t(read.csv(text = alldat[1:(ind-1)], header = FALSE, row.names = 1L)))
header
# REG UF ESTACAO
# V2 CO DF BRASILIA
rest_of_data <- read.csv(text = alldat[ind:(length(alldat))])
rest_of_data
# Date Hora PRECIP TEMP
# 1 01/01/2020 0000 UTC 0 20.0
# 2 01/01/2000 0100 UTC 0 19.5
# 3 01/01/2000 0200 UTC 0 21.0
然后我們可以cbind:
rownames(header) <- NULL
cbind(rest_of_data, header)
# Date Hora PRECIP TEMP REG UF ESTACAO
# 1 01/01/2020 0000 UTC 0 20.0 CO DF BRASILIA
# 2 01/01/2000 0100 UTC 0 19.5 CO DF BRASILIA
# 3 01/01/2000 0200 UTC 0 21.0 CO DF BRASILIA
(清除行名純粹是為了在cbinding時搶占警告,不是嚴格要求的。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313607.html
下一篇:如何重定向輸出以更改特定的csv列并寫入同一檔案。邏輯上:awk'BEGIN{FS=OFS=","}{$19=$1}1'a.csv>toSameFile
