[英]Replace values in a subset of a data.table
假設我有這個:
dt <- data.table(mtcars)[1:3, ]
dt[wt == 2.620, "am"] <- 4
dt[wt == 2.620,]
我的輸出是:
mpg cyl disp hp drat wt qsec vs am gear carb
1: 21 6 160 110 3.9 2.62 16.46 0 4 4 4
我只想在gear
和carb
列中將值4
替換為0
。
最終數據如下所示:
mpg cyl disp hp drat wt qsec vs am gear carb
1: 21.0 6 160 110 3.90 2.620 16.46 0 4 0 0
2: 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
3: 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
在您的小示例中,@HenryRice提出的方法就足夠了(可能還有wt == 2.62
的其他子集)。
如果要在更多行或更多列上執行此操作,則在這種情況下使用data.table
的for
/ set
循環將很有用。
for(j in c("gear", "carb"))
set(dt, i = which(dt[[j]] == 4 & dt[["wt"]] == 2.620), j = j, value = 0)
dt
# mpg cyl disp hp drat wt qsec vs am gear carb
# 1: 21.0 6 160 110 3.90 2.620 16.46 0 4 0 0
# 2: 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# 3: 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
像這樣:
dt$carb[dt$carb==4] <- 0
dt$gear[dt$gear==4] <- 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.