【发布时间】:2021-08-21 13:56:20
【问题描述】:
我尝试了多种方法将数据表中的两个值替换为 NA。
数据为here。有两个值 9223372036854775807 和 2147483647 我打算用 NA 替换它们
library(data.table)
data <- fread("https://raw.githubusercontent.com/Deborah-Jia/Complete_Analysis_da2/main/eg1.csv", integer64 = "numeric")
我试过了:
data[data = 9223372036854775807|2147483647]
有错误:
[.data.table(data, , data = 9223372036854775808 | 2147483647, 中的错误: 未使用的参数(数据 = 9223372036854775808 | 2147483647)
我检查了 [i, j, by...] 的结构,但找不到原因。所以,我改用 for 循环:
# only these cols have 9223372036854775807 and 2147483647
special_col <- data %>% select(matches("price|size|room")) %>% colnames()
for ( icol in special_col) {
data[icol == 9223372036854775807|2147483647, icol := NA]
}
它没有按预期工作;我仍然可以在数据表中找到2147483647。
我知道我可以使用
data[total_room_count_high == 9223372036854775807|2147483647, total_room_count_high := NA]
并且复制每一列,但是比较麻烦。
在这些方法之前,我还做了across、filter_at 和mapply 结合function 来处理每一列。但是只要我把col放在data[ ]里面,那么data.table就会认为col是一个列名,而不是代表所有列的变量。
【问题讨论】:
标签: r for-loop replace data.table