我有以下data.table的R
dt <- data.table(gender = c("Male", "Female"), Prop = c(0.49, 0.51))
# gender Prop
# 1: Male 0.49
# 2: Female 0.51
我想計算一Freq = Prop * 1000列,然后只回傳gender和Freq列。如何在單行代碼中執行此操作而不顯式參考該gender列且不修改dt?
我能做到的最好的是:
onsdist$gender[, c(.SD, Freq = Prop * 1000)][, .SD, .SDcols = - "Prop"]
# gender Freq1 Freq2
# 1: Male 490 490
# 2: Female 510 510
但我最終得到了一個重復的Freq列。
(我不想參考的原因gender是因為它跨data.tables變化。我不想修改的原因dt是因為我以后需要重新使用原始版本)。
uj5u.com熱心網友回復:
使用帶有 Prop = NULL 的轉換
dt[, transform(.SD, Freq = Prop * 1000, Prop = NULL)]
## gender Freq
## 1: Male 490
## 2: Female 510
或這種變化
transform(dt, Freq = Prop * 1000, Prop = NULL)
## gender Freq
## 1: Male 490
## 2: Female 510
uj5u.com熱心網友回復:
我們可以使用data.table語法來獲取輸出格式
dt[, c(.SD, .(Freq = Prop * 1000)), .SDcols = -"Prop"]
-輸出
gender Freq
1: Male 490
2: Female 510
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/387623.html
