我尝试向数据框添加条件列,但没有得到我期待的结果。
我有一个数据框,其中记录了列的值"步骤"不同时间间隔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
我出错的任何想法?
提前致谢。
答案 0 :(得分:2)
if
语句不适用于此。您需要使用ifelse
:
activityTimeAvgs$stepsImp <- ifelse(is.na(activityTimeAvgs$steps), activityTimeAvgs$avgsteps, activityTimeAvgs$steps)