给定条件替换data.table中的所有值 [英] Replace all values in a data.table given a condition
本文介绍了给定条件替换data.table中的所有值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
给定条件如何替换数据表中的所有值?
How would you replace all values in a data.table given a condition?
例如
ppp <- data.table(A=1:6,B=6:1,C=1:6,D=3:8)
A B C D
1 6 1 3
2 5 2 4
3 4 3 5
4 3 4 6
5 2 5 7
6 1 6 8
我要用NA替换所有 6
I want to replace all "6" by NA
A B C D
1 NA 1 3
2 5 2 4
3 4 3 5
4 3 4 NA
5 2 5 7
NA 1 6 8
我尝试过类似的操作
ppp[,ifelse(.SD==6,NA,.SD)]
但它不起作用,它产生的表要宽得多。
but it doesn't work, it produces a much wider table.
推荐答案
本机 data.table
的方式是:
for(col in names(ppp)) set(ppp, i=which(ppp[[col]]==6), j=col, value=NA)
# Test
> ppp
A B C D
1: 1 NA 1 3
2: 2 5 2 4
3: 3 4 3 5
4: 4 3 4 NA
5: 5 2 5 7
6: NA 1 NA 8
这种方法-也许更加冗长-仍然比 ppp [ppp == 6]<-NA
快得多,因为它避免了所有列的复制。
This approach - while perhaps more verbose - is nevertheless going to be significantly faster than ppp[ppp == 6] <- NA
, because it avoids the copying of all columns.
这篇关于给定条件替换data.table中的所有值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文