作者studioA (understand?)
看板R_Language
标题[问题] 如何快速计算内插多个栏位数值
时间Wed Aug 2 10:22:46 2023
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
我有一组数据如下,因为对方系统给的数据跨日整点 00:00的数据传输有异常
如下所示
日期 时间 参数A 参数B 参数C 参数D
2023-07-02 23:54 25 100 33 99
2023-07-02 23:57 25.1 128 40 89
2023-07-03 0:00
2023-07-03 0:03 25.8 111 52 101
2023-07-03 23:54 25.6 120 39 103
2023-07-04 23:57 27 157 55 88
2023-07-04 0:00
2023-07-04 0:03 24.6 155 48 93
我想使用内插法,上下数据取平均把各参数内插补资料进去,但因为栏位太多,日期也有近2万笔
用一般for 回圈发现跑很慢 然後我用apply 却跑不出来,求解
[程式范例]:
cal <- colnames(data)[-c(1:2)]
for(i in cal){
xset <- which(data$时间=="00:00")
for(j in xset ){
data[j,i] <- (data[j+1,i]+data[j-1,i])/2
}
}
[环境叙述]:
请提供 sessionInfo() 的输出结果,
R version 4.2.3 (2023-03-15 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 22621)
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Traditional)_Taiwan.utf8 LC_CTYPE=Chinese
(Traditional)_Taiwan.utf8
[3] LC_MONETARY=Chinese (Traditional)_Taiwan.utf8
LC_NUMERIC=C
[5] LC_TIME=Chinese (Traditional)_Taiwan.utf8
[关键字]:
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.247.190.110 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1690942968.A.306.html
1F:→ lycantrope: approx 08/02 10:37
※ 编辑: studioA (27.247.190.110 台湾), 08/02/2023 11:04:00
※ 编辑: studioA (27.247.190.110 台湾), 08/02/2023 11:06:23
2F:→ studioA: 刚刚试过approx 无法一次多个栏位 08/02 11:08
3F:→ celestialgod: 用for loop update dataframe 本来就非常慢也没有效 08/02 12:14
4F:→ celestialgod: 率 08/02 12:14
5F:→ celestialgod: 稍微考虑一下怎麽样舍弃掉for loop就可以加速了 这 08/02 12:15
6F:→ celestialgod: 里应该有很多方法 08/02 12:15
7F:→ andrew43: 这麽整齐(一律是23:57至00:03)之间的话,把它们截出来 08/03 16:51
8F:→ andrew43: 两两平均再回填即可。这样做就没有loop。 08/03 16:53