使用R更改dataframe中除特定列之外的所有列的所有值
我想更改dataframe中除特定列之外的所有列的所有值。我该怎么做 问题1:我下面的代码将更改dataframe中找到13的所有值。但我不想在C列中更改使用R更改dataframe中除特定列之外的所有列的所有值,r,dataframe,subset,R,Dataframe,Subset,我想更改dataframe中除特定列之外的所有列的所有值。我该怎么做 问题1:我下面的代码将更改dataframe中找到13的所有值。但我不想在C列中更改 df <- data.frame(list(A=c(12,14,13), B=c(16,13,18)),c=c(13,20,21)) df[df == 13]<-NA print(df) 您需要定义要应用条件的data.frame的子集,以及在该条件内定义该子集 另外,1:ncol(df)-1从所有序列中减去1,因此(在本例中)
df <- data.frame(list(A=c(12,14,13), B=c(16,13,18)),c=c(13,20,21))
df[df == 13]<-NA
print(df)
您需要定义要应用条件的data.frame的子集,以及在该条件内定义该子集 另外,
1:ncol(df)-1
从所有序列中减去1,因此(在本例中)得到0
和1
,而不是1
和2
df[,1:(ncol(df)-1)][df[,1:(ncol(df)-1)]==13] <-NA
# A B c
# 1 12 16 13
# 2 14 NA 20
# 3 NA 18 21
您可以用NA替换每列中的所有13s,C除外,用dplyr
library(dplyr)
df %>% mutate_at(vars(-one_of("c")), recode, `13`=NA_real_)
notc <- setdiff(names(df), "c")
df[df$c==13,notc]<-df[df$c==13,notc] %>% mutate_all(function(x) NA)
您可以将C==13的行的所有值设置为NA
df[df$c==13,setdiff(names(df), "c")]<-NA
你一次只能问一个问题。你能解释一下[指数[,2]]!=“c”,]?
indices = which(df == "13", arr.ind = TRUE)
replace(df, indices[names(df)[indices[,2]]!= "c",], NA)
# A B c
#1 12 16 13
#2 14 NA 20
#3 NA 18 21
replace(df, cbind(which(df$c == "13"), (1:NCOL(df))[-which(names(df) == "c")]), NA)
# A B c
#1 NA NA 13
#2 14 13 20
#3 13 18 21
library(dplyr)
df %>% mutate_at(vars(-one_of("c")), recode, `13`=NA_real_)
df[df$c==13,setdiff(names(df), "c")]<-NA
notc <- setdiff(names(df), "c")
df[df$c==13,notc]<-df[df$c==13,notc] %>% mutate_all(function(x) NA)