簡體   English   中英

替換data.table子集中的值

[英]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

我只想在gearcarb列中將值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.tablefor / 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM