R 将某些变量替换为NA,其中一个变量为NA
如果我想用基于条件的NA替换某些变量,最好使用什么函数? 如果状态=NA,则分数为1:分数为NA 尝试:R 将某些变量替换为NA,其中一个变量为NA,r,conditional-statements,na,R,Conditional Statements,Na,如果我想用基于条件的NA替换某些变量,最好使用什么函数? 如果状态=NA,则分数为1:分数为NA 尝试: if(df2$status == NA){ df2$score_2 <- NA }else{ df2$score_2 <- df$score_2 } if(df2$status==NA){ df2$score_2您可以通过找出数据框中的哪些行是NA,然后将这些行中的列设置为NA df <- data.frame(client_id = 1:4, Da
if(df2$status == NA){
df2$score_2 <- NA
}else{
df2$score_2 <- df$score_2
}
if(df2$status==NA){
df2$score_2您可以通过找出数据框中的哪些行是NA
,然后将这些行中的列设置为NA
df <- data.frame(client_id = 1:4,
Date = 1:4,
Status = c(1, NA, 1, NA),
Score1 = runif(4)*100,
Score2 = runif(4)*100,
Score3 = runif(4)*100)
idx <- is.na(df$Status)
df[idx, 4:6] <- NA
df
#> client_id Date Status Score1 Score2 Score3
#> 1 1 1 1 48.08677 16.62185 91.80062
#> 2 2 2 NA NA NA NA
#> 3 3 3 1 14.04552 64.55724 56.45998
#> 4 4 4 NA NA NA NA
df2-NA-NA-NA
#> 3 3 3 1 14.04552 64.55724 56.45998
#>4不,不,不,不
一个选项是在“状态”中查找NA
s,并将列名称为“score”的列分配给base R中的NA
i1 <- is.na(df2$Status)
df2[i1, grep("^Score_\\d+$", names(df2))] <- NA
谢谢!这对有几行的df有效吗?比如80行或100行?是的。idx会找到状态列的所有NA
行。在这种情况下,我必须知道变量的位置,对吗?我有很多变量必须用NA替换,但它们不符合顺序。我应该先排序吗?如果是多个变量,y您必须按位置或名称知道要替换的对象。@akruns answer提供了一种方法,通过匹配列名而不是按位置来进行替换。谢谢,我一直收到错误消息,说对象状态不匹配exist@DanielleTravassos在您的图像中,它显示状态
,而在您的代码中它是状态
。R区分大小写。因此,请将名称更改为正确的列名。我更新了codeHi Akrun,谢谢。这是状态,我仍然收到此消息。我可能做错了什么?@DanielleTravassos你能发布'df2'colnames(df2)的列名吗
。可能有一些领先/落后的空间。这非常有效。谢谢@akrun和@Jake!我希望我能选择两个答案,因为它们都很有用!
library(dplyr)
df2 %>%
mutate_at(vars(starts_with('Score')), ~ replace(., is.na(Status), NA))