【问题标题】:Count date mismatches between two columns计算两列之间的日期不匹配
【发布时间】:2019-12-17 08:55:52
【问题描述】:

我的数据集中的每个人都有两列出生日期(在数据框中)。我希望 R 计算两列中的值不相同的时间。这意味着计算两个出生日期列不相同的人数。

当 1 = 不相等的出生日期时,我尝试创建一个循环来获取向量(它的长度 = 数据集中的人数)。

x=rep(0,4092)
  for (i in length(x)){
    if(mydata$datebirth1[i]== (mydata$datebirth2[i]){x[i]=FALSE}
    else{x[i]=TRUE}
  } 
x

请注意,我在 2 列中有一些 NA 值

【问题讨论】:

  • 嘿,请添加一些代码,显示您到目前为止所做的工作以及数据库表结构,以便更容易为您提供帮助。
  • 谢谢,我补充了。

标签: r dataframe mismatch


【解决方案1】:

您可以使用 dplyr 轻松做到这一点:

library(tidyverse)

tibble::tibble(one = c(1L:6L),
               two = c(1L, 2L, 4L:7L)) %>% 
  dplyr::mutate(same = one == two)

A tibble: 6 x 3
    one   two same 
  <int> <int> <lgl>
1     1     1 TRUE 
2     2     2 TRUE 
3     3     4 FALSE
4     4     5 FALSE
5     5     6 FALSE
6     6     7 FALSE

一和二模拟您的日期列。数据的格式无关紧要

【讨论】:

  • 如果我希望第三列是一二相减的结果?
【解决方案2】:

首先,您创建一个包含 1 和 0 的新列,其中 1 表示两个日期不匹配。

df <- transform(df, c= ifelse(a==b, 0, 1))

然后您可以轻松地将sum 应用于您创建的列:

sum(df$c)

对于未来,请考虑提供您迄今为止尝试过的解决方案的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2019-04-20
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多