用NA替换特定列的特定值 数据

问题描述

我有一个包含二进制(0/1)项目的大数据框。但是,有些列包含3。我想将某些列的NA更改为3,并将更改应用于原始数据帧。

我尝试了一些解决方案,但它们要么应用于整个数据集,要么仅使用change列创建一个新的数据集。

数据集的标题如下:

                          X1  X2  X3  X4  X5  X6
                      S1  1   45  0   1   1    3
                      S2  2   12  1   0   3    0
                      S3  3   3   0   0   1    1
                      S4  4   11  1   0   3    3
                      S5  5   13  0   1   1    3
                      S6  6   20  1   0   1    1                           

所需的输出

                          X1  X2  X3  X4  X5  X6
                      S1  1   45  0   1   1    NA
                      S2  2   12  1   0   NA   0
                      S3  3   3   0   0   1    1
                      S4  4   11  1   0   NA   NA
                      S5  5   13  0   1   1    NA
                      S6  6   20  1   0   1    1    

谢谢:)

解决方法

尝试使用dplyracross()

library(dplyr)
#Code
df <- df %>% rowwise() %>% mutate(across(X5:X6,~ifelse(.==3,NA,.)))

输出:

# A tibble: 6 x 6
# Rowwise: 
     X1    X2    X3    X4    X5    X6
  <int> <int> <int> <int> <int> <int>
1     1    45     0     1     1    NA
2     2    12     1     0    NA     0
3     3     3     0     0     1     1
4     4    11     1     0    NA    NA
5     5    13     0     1     1    NA
6     6    20     1     0     1     1
,

您可以使用const routes: Routes = [ { path: '',component: DashboardComponent,children: [ { path: '',component: DashboardMainComponent },{ path: 'barcode-scanner',component: BarcodeScannerComponent },{ path: '**',redirectTo: '' } ] },]; 进行此操作。

这里是数据的友好dplyr

dput
,

base R中,我们可以做到

data[3:6][data[3:6] == 3] <- NA

-输出

data
#   X1 X2 X3 X4 X5 X6
#S1  1 45  0  1  1 NA
#S2  2 12  1  0 NA  0
#S3  3  3  0  0  1  1
#S4  4 11  1  0 NA NA
#S5  5 13  0  1  1 NA
#S6  6 20  1  0  1  1

注意:使用base R还将保留行名

数据

data <- structure(list(X1 = c(1,2,3,4,5,6),X2 = c(45,12,11,13,20),X3 = c(0,1,1),X4 = c(1,0),X5 = c(1,X6 = c(3,1)),class = "data.frame",row.names = c("S1","S2","S3","S4","S5","S6"))