当前位置: 首页 > 知识库问答 >
问题:

IFELS()使用mutate()[duplicate]生成错误结果

夏侯和韵
2023-03-14
> dput(veh)
structure(list(Time = c(138.6, 138.7, 138.8, 138.9, 139, 139.1, 
139.2, 139.3, 139.4, 139.5, 139.6, 139.7, 139.8, 139.9, 140, 
140.1, 140.2, 140.3, 140.4, 140.5, 140.6, 149.9, 150, 150.1, 
150.2)), .Names = "Time", row.names = c(NA, -25L), class = c("tbl_df", 
"tbl", "data.frame"))

我正在寻找time变量的差异。当差异大于0.1时,我希望将其标记为big。以下是我尝试的:

library(dplyr)
veh %>%
mutate(diff_t = c(NA, diff(Time))) %>%
mutate(act = ifelse(diff_t>0.1, "BIG", "NA"))   

# A tibble: 25 × 3
    Time diff_t   act
   <dbl>  <dbl> <chr>
1  138.6     NA  <NA>
2  138.7    0.1    NA
3  138.8    0.1   BIG
4  138.9    0.1    NA
5  139.0    0.1    NA
6  139.1    0.1    NA
7  139.2    0.1    NA
8  139.3    0.1   BIG
9  139.4    0.1    NA
10 139.5    0.1    NA
# ... with 15 more rows  

为什么0.1在这里被标记为big

foo <- data.frame(a = c(1:5, 8))
foo %>% 
mutate(diff_a = c(NA, diff(a))) %>% 
mutate(act = ifelse(diff_a>1, "BIG", "NA"))  

  a diff_a  act
1 1     NA <NA>
2 2      1   NA
3 3      1   NA
4 4      1   NA
5 5      1   NA
6 8      3  BIG 

共有1个答案

龙德海
2023-03-14

这些数字不完全等于0.1。一种选择是循环并尝试使用ifelse

veh %>% 
    mutate(diff_t = round(c(NA, diff(Time)),2), 
           act = ifelse(diff_t >= 0.1 & !is.na(diff_t), "BIG", NA))
 类似资料:
  • 这里是源代码 代码编译没有错误,但结果是这样的:

  • 问题内容: 我正在创建一些类来处理各种类型的文件共享(nfs,afp,s3,本地磁盘)等中的文件名。当用户输入时,会得到一个标识数据源(即或)的字符串。 我从具有通用代码的基类中继承特定文件系统。我感到困惑的是对象创建。我有以下内容: 我以为这会很好用,但我读过的大多数文章都劝阻它。有没有更公认的方法来解决此问题? 问题答案: 我 不 认为用做你想要的东西是不正确的。换句话说,我不同意这个问题)的

  • 我想在使用dplyr时动态创建变量名;不过,我也可以使用非DPLYR解决方案。 例如:

  • 我有以下代码片段 我尝试运行应用程序时出现以下错误(部分) 似乎type="num "没有被处理。我怀疑年龄int也可能是一个问题,因为它是一个int,但需要一个string。从sting到int的反向转换也可能是一个问题。 任何帮助是值得赞赏的。 谢谢

  • 问题内容: 我试图让到效果的,然后(在Windows 7; ñ 。一个透明安装了Cygwin所有X命令礼貌 ñ x的命令决心在命令行就好了)。 最初,我使用,但是想捕获stdout / stderr信息,所以我想使用,然后重写代码以使用它。但是,这破坏了一切。 重写的命令变为: 但是,运行此命令将产生以下错误: 重写的命令变为: 但是,运行此命令将产生以下错误: 如何使spawn运行可以正常使用的

  • 我需要在我的项目中使用一个web服务。我使用NetBeans所以我右键单击我的项目并尝试添加一个新的“Web服务客户端”。上次我检查时,这是创建web服务客户机的方法。但它导致一个AssertionError,它说: java.lang.AssertionError:org.xml.sax.SAXParseException;systemid:jar:file:/path/to/glassfish