我有以下$isi = $html->find("div[id=table]", 0)->plaintext;
data.table
我需è¦ä¸ºæ¯ä¸ªlibrary(data.table)
testdt <- data.table(var1=rep(c("a", "b"), e=3), p1=1:6, p2=11:16)
# var1 p1 p2
#1: a 1 11
#2: a 2 12
#3: a 3 13
#4: b 4 14
#5: b 5 15
#6: b 6 16
设置æ¯ä¸ªvar1
çš„ä¸é—´å€¼ï¼Œp*
应该在行ä¸ï¼Œå¹¶ä¸”列ä¸çš„p*
的唯一值ä¸åŒã€‚登记/>
所以,我æ£åœ¨å¯»æ‰¾è¿™ä¸ªè¾“出:
var1
我å‘现获得它的最简å•æ–¹æ³•æ˜¯ï¼š
variable a b
1 p1 2 5
2 p2 12 15
但我有一ç§æ„Ÿè§‰ï¼Œæˆ‘在这里é—æ¼äº†ä¸€äº›ä¸œè¥¿ï¼ˆæ¯”如最适åˆçš„功能),所以我很想知é“一ç§ç›´æŽ¥çš„æ–¹å¼ï¼ˆç‹¬ç‰¹çš„功能)æ¥åšåŒæ ·çš„事情。
æˆ‘çŸ¥é“ reshape2 程åºåŒ…dcast(melt(testdt, id.vars = "var1", measure.vars = c("p1", "p2")),
variable ~ var1,
value.var = "value",
fun.aggregate = median)
å¯ä»¥ä½¿ç”¨recast
执行æ¤æ“作,但我想é¿å…åŠ è½½å¦ä¸€ä¸ªç¨‹åºåŒ…。< / p>
编辑:
我æ£åœ¨å¯»æ‰¾æ—¢ç®€å•åˆé«˜æ•ˆçš„解决方案。这将应用于约40个表的列表,其ä¸åŒ…å«~300列和~80è¡Œ
ç”案 0 :(得分:1)
如果速度是主è¦è€ƒè™‘å› ç´ ï¼Œå¦‚æžœé¦–å…ˆè®¡ç®—median
,则速度会略微æ高约23%(尽管以毫秒为å•ä½ï¼‰ã€‚éšç€æ•°æ®é›†çš„大å°å¢žåŠ ,这个增é‡ä¹Ÿå¯èƒ½ä¼šå¢žåŠ ï¼Œå› ä¸ºè¦èžåŒ–çš„æ•°æ®è¾ƒå°‘。
library(data.table)
dcast(melt(testdt[, lapply(.SD, median), by=var1], id.vars="var1"), variable ~ var1))
基准
Unit: milliseconds
expr min lq mean median uq max neval
fun.aggregate = median 4.221654 4.453063 4.87418 4.510775 4.579718 35.28569 1000
lapply(.SD, median) 3.196289 3.410711 3.77483 3.461073 3.523096 22.78637 1000