【问题标题】:Arithmetic operations on R listsR列表上的算术运算
【发布时间】:2019-03-04 04:45:48
【问题描述】:

我有一个data.frame,其变量的数据类型为list,其值采用Date 格式。如何计算来自 2 个不同变量的两个日期之间的差异,并将其命名为 YrsEmployed 和数据类型 list

请注意,下面的StartHireDateEndHireDateDate 格式的。我只是不知道如何将它们显示为Date

> > print(HiringDateInfo)
          X_id                                                     StartHireDate
1 530eed6dbfb5c1a8e77cb0fc                            NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
2 5391a88bbfb5c1b1fed0bcf4                            NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
3 53a0fa3cf1f17922a0287add                            NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
4 53abd15cf1f179c3e81a3fbe                            NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
5 54dd934ff1f179acfb7b0a2f 14304, 15095, 15279, 15431, 15492, 15645, 15859, NA, 16222, 16375
                                                        EndHireDate
1                            NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
2                            NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
3                            NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
4                            NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
5 15063, 15308, 15338, 15490, 15613, 15855, 16116, 16159, 16312, NA

我期待一个新的data.frameYrsEmployed

YrsEmployed
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
2.07945205479452,0.583561643835616,0.161643835616438,0.161643835616438,0.3315068,49315069,0.575342465753425,0.704109589041096,NA,0.246575342465753,NA

【问题讨论】:

    标签: r list date-arithmetic arithmetic-expressions


    【解决方案1】:

    我建议不要为像 YrsEmployed 这样的单个变量计算新的 df。 通过加载 dplyr 包,您可以改变新列 YrsEmployed。 首先,您使用以下代码将列更改为日期:

    HiringDateInfo$StartHireDate <- as.Date(HiringDateInfo$StartHireDate, format = "depending on your formate")
    HiringDateInfo$EndHireDate <- as.Date(HiringDateInfo$EndHireDate, format = "depending on your formate")
    

    之后,您可以使用 dplyr 的 mutate 函数计算 YrsEmployed。 希望它有效!

    【讨论】:

    • 感谢您的回答。我正在整理我的数据以及创建对进一步分析真正必要且至关重要的变量的过程。需要创建的变量之一是 YrsEmployed。这就是为什么我在新的 df 中需要它的原因。有什么办法可以做到吗?
    • newdf &lt;- HiringDateInfo %&gt;% mutate(YrsEmployed = Start - End) %&gt;% select(YrsEmployed)
    • 谢谢,但我收到此错误:mutate_impl(.data, dots) 中的错误:评估错误:二进制运算符的非数字参数。
    • 我的 StartDate 和 EndDate 数据类型都是列表,我希望 YrsEmployed 也应该是数据类型列表。
    • 也许这可以帮助你:how to mutate on list。结果应该是数据类型列表。
    【解决方案2】:

    这是我为解决它所做的。 1.我定义一个函数function(x, y) list(((x-y)/365)*1) 2.然后使用mapply来附带想要的新变量mapply(fdiff, HiringDateInfo$EndHireDate, HiringDateInfo$StartHireDate)

    【讨论】:

      猜你喜欢
      • 2017-11-19
      • 1970-01-01
      • 2011-10-22
      • 2020-07-13
      • 2018-01-09
      • 2020-07-16
      • 2019-08-02
      • 2017-10-31
      相关资源
      最近更新 更多