使用R

时间:2017-10-29 14:38:44

标签: r

我尝试向数据框添加条件列,但没有得到我期待的结果。

我有一个数据框,其中记录了列的值"步骤"不同时间间隔5分钟。我试图在'步骤'通过使用测量日的给定5分钟间隔的平均步数来列。注:我尝试使用MICE包,但它只是撞坏了我的电脑,所以我选择了更多的手动解决方法。

作为一个中间阶段,我已经为现有数据框绑定了一个额外的列,其中包含该间隔的平均步数。我接下来要做的是创建一个列,如果原始步数为NULL,则返回该值,如果不为null则仅使用原始值。这是我的代码:

activityTimeAvgs$stepsImp <- if(is.na(activityTimeAvgs$steps)){
  activityTimeAvgs$avgsteps
} else {
  activityTimeAvgs$steps
}

我期望发生的事情是如果&#39;步骤&#39;那么if语句将评估为TRUE。是NA,因此给出了avgsteps&#39 ;;在步骤&#39;不是NA我希望它只是使用原始值来执行步骤&#39;。但是,输出只是给出了&#39; avgsteps&#39;在每一排,这没什么用。我也收到以下警告:

Warning message:
In if (is.na(activityTimeAvgs$steps)) { :
  the condition has length > 1 and only the first element will be used

我出错的任何想法?

提前致谢。

1 个答案:

答案 0 :(得分:2)

if语句不适用于此。您需要使用ifelse

activityTimeAvgs$stepsImp <- ifelse(is.na(activityTimeAvgs$steps), activityTimeAvgs$avgsteps, activityTimeAvgs$steps)