使用函数在 R 中创建标志变量
Create Flag Variables in R using a function
我想在 R 中创建一个函数,它将输出从数据框中的原始变量派生的标志变量,然后理想地输出数据框中的每个变量。
我想为数据框中的每个变量创建一个新变量,如果原始变量值为 NA,则该值等于 1,否则,如果不是 NA,则该值等于 0。
我还想将新变量称为与原始变量相同的东西,只是在它前面加上 "M_" 前缀。
这是一个例子:
INDEX HEIGHT LENGTH
1 70 55
2 60 NA
3 NA 35
4 NA NA
我希望输出如下所示:
INDEX HEIGHT M_HEIGHT LENGTH M_LENGTH
1 70 0 55 0
2 60 0 NA 1
3 NA 1 35 0
4 NA 1 NA 1
我目前正在为每个变量分别执行此操作,但我想加快速度,而不必一遍又一遍地重复同样的事情。
df$M_HEIGHT <- ifelse(is.na(HEIGHT),1,0)
“[<-”函数可以按名称创建(分配)新列:
> dat[ , paste0( "M_",names(dat)[-1])] <-
lapply(dat[-1], function(x) as.numeric(is.na(x)) )
> dat
INDEX HEIGHT LENGTH M_HEIGHT M_LENGTH
1 1 70 55 0 0
2 2 60 NA 0 1
3 3 NA 35 1 0
4 4 NA NA 1 1
由于您想为 is.na 逻辑测试分配预期的 0/1 值,因此不需要 ifelse
。如果有更复杂的测试或值范围,您可以使用 ifelse
。
我想在 R 中创建一个函数,它将输出从数据框中的原始变量派生的标志变量,然后理想地输出数据框中的每个变量。
我想为数据框中的每个变量创建一个新变量,如果原始变量值为 NA,则该值等于 1,否则,如果不是 NA,则该值等于 0。
我还想将新变量称为与原始变量相同的东西,只是在它前面加上 "M_" 前缀。
这是一个例子:
INDEX HEIGHT LENGTH
1 70 55
2 60 NA
3 NA 35
4 NA NA
我希望输出如下所示:
INDEX HEIGHT M_HEIGHT LENGTH M_LENGTH
1 70 0 55 0
2 60 0 NA 1
3 NA 1 35 0
4 NA 1 NA 1
我目前正在为每个变量分别执行此操作,但我想加快速度,而不必一遍又一遍地重复同样的事情。
df$M_HEIGHT <- ifelse(is.na(HEIGHT),1,0)
“[<-”函数可以按名称创建(分配)新列:
> dat[ , paste0( "M_",names(dat)[-1])] <-
lapply(dat[-1], function(x) as.numeric(is.na(x)) )
> dat
INDEX HEIGHT LENGTH M_HEIGHT M_LENGTH
1 1 70 55 0 0
2 2 60 NA 0 1
3 3 NA 35 1 0
4 4 NA NA 1 1
由于您想为 is.na 逻辑测试分配预期的 0/1 值,因此不需要 ifelse
。如果有更复杂的测试或值范围,您可以使用 ifelse
。