ifelse |不匹配

时间:2016-08-22 18:57:19

标签: r if-statement dplyr

我的目标是比较两个向量中的元素。

这是我的第一个Tibble:

Post_Rev
# A tibble: 12 x 2
   Fiscal.Quarter.ID        Rev
       <S3: yearqtr>      <dbl>
1            2014 Q1 3889692022
2            2014 Q2 3763028239
3            2014 Q3 4092263526
4            2014 Q4 4865950809
5            2015 Q1 4015879019
6            2015 Q2 4112382310
7            2015 Q3 4247783642
8            2015 Q4 5040074056
9            2016 Q1 4100946981
10           2016 Q2 4021051564
11           2016 Q3 4373665674
12           2016 Q4 5064779447

这是我的第二个载体:

Total_Rev
 [1] 3889692022 3763028239 4092263526 4865950809 4015879019 4112382310 4247783642 5040074056
 [9] 4100946981 4021051564 4373665674 5064779447

正如我们所看到的,两个向量即Post_Rev中的Rev和Total_Rev是相等的。 我还会告诉你班级类型。

class(Post_Rev$Rev)
[1] "numeric"

class(Total_Rev)
[1] "numeric"

然而,当我运行ifelse时,它会抛出&#34;不等的行&#34;对于某些行:

ifelse(Post_Rev$Rev != Total_Rev,TRUE,FALSE)
 [1] FALSE  **TRUE** FALSE FALSE FALSE FALSE FALSE FALSE  **TRUE  TRUE** FALSE FALSE

可能是什么原因?无论如何我能找到原因吗?我很感激你的想法。

我尝试了Wickham的if_else功能:

if_else(Post_Rev$Rev != Total_Rev,TRUE,FALSE)
 [1] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE

我得到了相同的结果。我不确定为什么会这样。

添加dput():

dput(Post_Rev)
structure(list(Fiscal.Quarter.ID = structure(c(2014, 2014.25, 
2014.5, 2014.75, 2015, 2015.25, 2015.5, 2015.75, 2016, 2016.25, 
2016.5, 2016.75), class = "yearqtr"), Rev = c(3889692022.46776, 
3763028239.33219, 4092263526.07502, 4865950809.37372, 4015879019.37871, 
4112382310.2044, 4247783641.70853, 5040074055.98503, 4100946980.66123, 
4021051564.10049, 4373665674.01029, 5064779446.86354)), .Names = c("Fiscal.Quarter.ID", 
"Rev"), row.names = c(NA, -12L), class = c("tbl_df", "tbl", "data.frame"
))

dput(Total_Rev)
c(3889692022.46776, 3763028239.33219, 4092263526.07502, 4865950809.37372, 
4015879019.37871, 4112382310.2044, 4247783641.70853, 5040074055.98503, 
4100946980.66123, 4021051564.10049, 4373665674.01029, 5064779446.86354

1 个答案:

答案 0 :(得分:0)

我想回答这个问题。 r2evans和42现场:

当我们减去数字时,我们发现数字存在差异。

Post_Rev$Rev-Total_Rev
 [1]  0.000000e+00 -4.768372e-07  0.000000e+00  0.000000e+00  0.000000e+00  0.000000e+00
 [7]  0.000000e+00  0.000000e+00 -4.768372e-07 -4.768372e-07  0.000000e+00  0.000000e+00