将随机操作应用于列组
Applying random operations to groups of columns
假设我有以下数据集:
id = 1:100
var_1 = rnorm(100,100,100)
var_2 = rnorm(100,100,100)
var_3 = rnorm(100,100,100)
var_4 = rnorm(100,100,100)
my_data = data.frame(id, var_1, var_2, var_3, var_4)
- 我想用 NA
随机替换 var_1 和 var_2 中 25 个相同的条目
- 我想用 NA 随机替换 var_3 和 var_4 中的 20 个相同条目。
我发现以下代码可以用 NA 替换列中的条目:
my_data$var_1[sample(nrow(my_data),25)]<-NA
my_data$var_2[sample(nrow(my_data),25)]<-NA
my_data$var_3[sample(nrow(my_data),20)]<-NA
my_data$var_4[sample(nrow(my_data),20)]<-NA
但是有什么办法可以确保var_1和var_2中相同的条目被替换为NA,var_3和var_4中的相同条目被替换与 NA?
参考:
像这样?
library(data.table)
setDT(my_data)
my_data[sample(.N, 25), c('var_1', 'var_2'):=NA]
my_data[sample(.N, 25), c('var_3', 'var_4'):=NA]
my_data[1:10]
## id var_1 var_2 var_3 var_4
## 1: 1 37.35462 37.963332 NA NA
## 2: 2 118.36433 104.211587 268.88733 -4.729815
## 3: 3 16.43714 8.907835 258.65884 297.133739
## 4: 4 259.52808 115.802877 66.90922 61.636789
## 5: 5 NA NA -128.52355 265.414530
## 6: 6 17.95316 276.728727 349.76616 251.221269
## 7: 7 148.74291 171.670748 NA NA
## 8: 8 173.83247 191.017423 154.13273 156.722091
## 9: 9 157.57814 138.418536 98.66005 -2.454848
## 10: 10 69.46116 268.217608 151.01084 132.300650
假设我有以下数据集:
id = 1:100
var_1 = rnorm(100,100,100)
var_2 = rnorm(100,100,100)
var_3 = rnorm(100,100,100)
var_4 = rnorm(100,100,100)
my_data = data.frame(id, var_1, var_2, var_3, var_4)
- 我想用 NA 随机替换 var_1 和 var_2 中 25 个相同的条目
- 我想用 NA 随机替换 var_3 和 var_4 中的 20 个相同条目。
我发现以下代码可以用 NA 替换列中的条目:
my_data$var_1[sample(nrow(my_data),25)]<-NA
my_data$var_2[sample(nrow(my_data),25)]<-NA
my_data$var_3[sample(nrow(my_data),20)]<-NA
my_data$var_4[sample(nrow(my_data),20)]<-NA
但是有什么办法可以确保var_1和var_2中相同的条目被替换为NA,var_3和var_4中的相同条目被替换与 NA?
参考:
像这样?
library(data.table)
setDT(my_data)
my_data[sample(.N, 25), c('var_1', 'var_2'):=NA]
my_data[sample(.N, 25), c('var_3', 'var_4'):=NA]
my_data[1:10]
## id var_1 var_2 var_3 var_4
## 1: 1 37.35462 37.963332 NA NA
## 2: 2 118.36433 104.211587 268.88733 -4.729815
## 3: 3 16.43714 8.907835 258.65884 297.133739
## 4: 4 259.52808 115.802877 66.90922 61.636789
## 5: 5 NA NA -128.52355 265.414530
## 6: 6 17.95316 276.728727 349.76616 251.221269
## 7: 7 148.74291 171.670748 NA NA
## 8: 8 173.83247 191.017423 154.13273 156.722091
## 9: 9 157.57814 138.418536 98.66005 -2.454848
## 10: 10 69.46116 268.217608 151.01084 132.300650