【问题标题】:Create Flag Variables in R using a function使用函数在 R 中创建标志变量
【发布时间】:2015-05-17 20:33:36
【问题描述】:

我想在 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)

【问题讨论】:

  • 学习格式化代码块 .... 使用 SO 接口很简单。

标签: r function dataframe na


【解决方案1】:

“[

> 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

【讨论】:

  • 谢谢你!这正是我想要的。
猜你喜欢
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多