盡管對某些人來說這似乎是一項簡單的任務,但作為 R 的初學者,它一直令人沮喪!任務如下。我有一個包含以下列的表格:
colnames(gov_data)
[1] "year" "quarter" "employed"
[4] "newhires" "separations" "jobscreated"
[7] "jobsdestroyed" "state" "mw"
[10] "teen_wage" "teen_pop" "adult_wage"
[13] "teen_share_working" "unemp_primemale" "recession"
[16] "period"
使用state_list<-split(gov_data, gov_data$state)我現在有一個對應于每個狀態的 data.tables 串列。在這些 data.tables 中的每一個中,我想按日期排序。這是我如何做到的。如果這效率低下,我歡迎您的替代方案!
orderfun <- function (x) {
x[order(period)]
}
lapply(state_list, orderfun)
我現在想添加一個標記為“change_mw”的列,它對應于“mw”列中的變化。我知道如何對單個 data.table 執行此操作。我會創建一個滯后的列,因此它的值是 t-1 中的“mw”,然后取這兩列之間的差異:
one_table[,`:=` (mw_t_minus_1 = shift(mw,n=1,type="lag"), change_mw = mw - mw_t_minus_1) ][, mw_t_minus_1 = NULL ]
如何跨串列中的多個 data.tables 執行此操作?在這種情況下甚至可以使用 data.table [i,j,by] 嗎?你會怎么做這個任務?再次感謝您的幫助!
uj5u.com熱心網友回復:
這是一個類似的例子,我可以通過適當的演示資料接近
library(data.table)
dtCars <- data.table(mtcars, keep.rownames=TRUE)
dtCars[order(hp), change:= hp-shift(hp), by=cyl]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/367472.html
上一篇:關于Python元組操作
