首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据R数据中的另一个变量创建具有NA或数字的数值变量

如何根据R数据中的另一个变量创建具有NA或数字的数值变量
EN

Stack Overflow用户
提问于 2019-05-02 14:23:10
回答 1查看 22关注 0票数 2

我有一个dataframe (df),它有三个数字分数变量(New、numeric、Old)。我需要计算新与中(Diff1)和新与旧(Diff2)之间的差异分数。如果中间得分是NA,则两者的差值都必须是NA。差异分数将被放入一个新的变量中。

差异1很容易。DIFF1 <- New总是给出正确的答案。

差异2在以下情况下正确工作:(1)中等分数存在,中等得分为NA,最新或最老的得分也为NA。

当中间分数是NA,并且存在最古老的和最新的分数时,差异2总是数字的。我不能让差异2成为NA。

我尝试了命名变量的所有排列(例如df$New)和我能想到的带括号的排列,但都没有成功。我还尝试使用==和=而不是<-。我还验证了(使用Rcmdr),我认为是NA的变量实际上是NA。

在数据中

代码语言:javascript
复制
Old     Middle      New     
2483        NA      585     

代码

代码语言:javascript
复制
Ifelse (is.na(df[,"Middle"]),   
       (df[,"Diff2"] <- NA ),  
       (df[,"Diff2"] <- with(df,New - Old)))  

实际输出数据

代码语言:javascript
复制
Diff1(New – Middle) Diff2(New – Old)  
NA                  -1898  

期望输出数据

代码语言:javascript
复制
Diff1(New – Middle) Diff2(New – Old)
NA                  NA
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 14:24:36

我们可以将ifelse中的代码更改为

代码语言:javascript
复制
df$Diff2 <- with(df, ifelse(is.na(Middle), NA_real_, New - Old))

请注意,将ifelse中的赋值(ifelse)替换为单个赋值(不起作用)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55954535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档