【问题标题】:Adding a variable with temporal groups添加具有时间组的变量
【发布时间】:2021-06-11 09:28:18
【问题描述】:

提前谢谢你。

我有一个带有变量 Time 的数据框,以秒为单位。

我想添加另一个变量 Conditions 并在 conditionlabel 中出现一个向量,以便在 Time 的 70 秒内出现,直到数据帧结束。也就是说,在Time的0~70秒内,Condition将包含1,70~140秒将包含6,140~210秒将包含3,以此类推。

到目前为止,这是我的代码:

conditionlabel = c(1,6,3,2,4,5)
data = data %>%
 mutate(Condition = conditionlabel)

还有我的数据框:

data <- structure(list(Time = c(1.71, 3.2, 4.73, 5.65, 6.65, 
                                6.75, 7.98, 8.29, 11.39, 13.31, 13.61, 14.28, 16.61, 19.39, 21.57, 
                                22.77, 23.87, 24.05, 24.32, 24.68, 24.72, 24.79, 25.98, 26.43, 
                                27.37, 27.67, 28.04, 29.27, 31.29, 31.42, 32.05, 33.45, 33.56, 
                                34.11, 35.25, 35.84, 37.72, 38.09, 38.59, 39.03, 40.19, 40.64, 
                                41.44, 42.78, 42.81, 43.15, 43.58, 44.43, 44.69, 44.9, 45.16, 
                                45.63, 46.86, 48.91, 50.96, 52.03, 52.46, 53.13, 54.28, 55.51, 
                                55.91, 57.36, 58, 58.17, 58.2, 58.53, 59.3, 59.83, 61.22, 61.75, 
                                62.28, 63.58, 63.91, 65.04, 66.54, 67.1, 69.45, 71.67, 71.81, 
                                74.04, 77.19, 78.04, 78.47, 80, 80.11, 81.36, 81.89, 83.09, 83.63, 
                                83.66, 83.69, 84.26, 84.85, 85.71, 89.29, 90.23, 91.51, 91.78, 
                                91.95, 96.3, 98.61, 99.08, 99.95, 101.14, 101.44, 102.5, 102.77, 
                                103.57, 103.8, 105.15, 105.28, 105.48, 105.72, 107.38, 107.77, 
                                107.93, 108.97, 109.13, 109.23, 109.6, 111.29, 113.12, 113.15, 
                                113.18, 116.17, 116.37, 117.75, 120.44, 120.91, 121, 122.54, 
                                123.17, 123.99, 124.39, 125.49, 127.71, 129.11, 130.4, 130.93, 
                                132.16, 132.73, 133.04, 133.57, 134.15, 134.45, 136.46, 137.43, 
                                138.43, 139.43, 140.25, 140.61, 143.3, 143.5, 143.56, 145.57, 
                                146.65, 147.49, 147.61, 147.85, 148.02, 148.8, 151.07, 151.62, 
                                151.75, 152.16, 153.79, 154.94, 155.04, 155.2, 156.64, 156.7, 
                                156.77, 157.07, 158.95, 159.15, 160.36, 161.4, 162.07, 162.24, 
                                162.44, 162.48, 162.67, 162.81, 163.07, 164.89, 165.39, 165.82, 
                                166.09, 166.72, 166.83, 167.27, 168.61, 170.14, 171.52, 172.26, 
                                173.13, 173.73, 174.04, 174.18, 174.21, 174.48, 175.21, 175.31, 
                                175.48, 176.98, 177.56, 178.93, 179.03, 182.21, 184.03, 184.76, 
                                185.06, 185.77, 186.39, 186.6, 186.95, 187.02, 187.58, 187.91, 
                                188.08, 189.15, 189.88, 190.47, 191, 191.8, 193.5, 194.69, 195.29, 
                                195.59, 197.07, 199.4, 200.35, 201.75, 202.28, 202.36, 202.92, 
                                203.45, 203.62, 204.14, 204.57, 204.78, 204.87, 205.84, 206.47, 
                                206.58, 207, 208.66, 208.99, 209.22, 212.51, 215.13, 216.02, 
                                218.51, 218.61, 220.01, 220.04, 220.38, 221.53, 221.96, 222.63, 
                                223.03, 223.17, 224.28, 225.64, 226.34, 226.38, 226.78, 226.81, 
                                227.7, 227.76, 227.87, 228.2, 229.73, 230.36, 231.15, 231.58, 
                                234.83, 235.66, 236.2, 236.46, 237.58, 237.85, 237.88, 238.32, 
                                238.42, 239.21, 239.38, 240.05, 243.24, 243.87, 243.93, 245.45, 
                                245.56, 245.75, 247.03, 247.12, 249.97, 250.78, 251.89, 253.99, 
                                254.57, 257.68, 258.69, 258.85, 259.52, 259.99, 262.81, 263.28, 
                                263.98, 265.93, 266.06, 268.1, 268.34, 270.18, 274.3, 276.99, 
                                278.77, 279.54, 279.87, 280.43, 282.29, 282.35, 283.15, 283.35, 
                                284.59, 285.2, 285.37, 290.75, 290.89, 291.12, 291.29, 293.53, 
                                294.61, 296.86, 298.64, 299.64, 301.24, 303.29, 307.01, 307.18, 
                                307.95, 309.66, 309.83, 309.86, 310.13, 310.69, 310.73, 312.01, 
                                315.36, 316.1, 316.27, 316.56, 316.93, 317, 317.27, 317.9, 318.1, 
                                319.25, 319.72, 319.99, 320.22, 322.3, 324.96, 326.42, 326.76, 
                                327.62, 328.35, 328.47, 328.84, 329.27, 329.57, 330.43, 331, 
                                332.22, 332.75, 334.05, 334.72, 334.86, 335.74, 338.75, 340.86, 
                                341.84, 341.94, 343.14, 344.61, 344.71, 344.81, 345.85, 349.48, 
                                349.68, 349.85, 350.61, 353.46, 353.53, 353.76, 354.36, 357.58, 
                                360.8, 362.11, 362.15, 362.21, 362.35, 362.68, 364.18, 368.26, 
                                369.02, 369.12, 369.35, 369.49, 369.85, 370.51, 371.68, 371.98, 
                                372.01, 372.17, 372.47, 374.17, 376.28, 376.75, 377.32, 378.66, 
                                379.37, 380.97, 381.3, 381.44, 381.54, 381.64, 381.87, 382.79, 
                                383.13, 385.09, 385.59, 386.74, 387.68, 387.71, 390.29, 390.82, 
                                391.23, 393.14, 393.21, 393.81, 395.08, 395.11, 395.21, 395.66, 
                                395.83, 396.16, 396.29, 397.06, 397.23, 398.19, 398.66, 398.83, 
                                402.77, 404.23, 404.36, 404.64, 405.03, 405.23, 405.27, 405.53, 
                                406.41, 406.71, 407.18, 408.02, 408.08, 408.65, 409.66, 411.26, 
                                411.54, 411.76, 412.3, 412.67, 412.95, 413.18, 413.21, 414.51, 
                                415.09, 415.15, 415.22, 418.1, 418.64, 420.86, 421.55, 423.28, 
                                424.08, 426.49, 427.42, 429.29, 429.54, 429.68, 429.94, 430.27, 
                                430.47, 430.91, 431.64, 431.87, 432.34, 434.29, 434.66, 434.9, 
                                436.21, 438.01, 438.75, 439.08, 439.08, 439.46, 442.56, 443.68, 
                                444.11, 445, 445.5, 446.36, 446.56, 447.33, 447.36, 448.41, 449.25, 
                                450.42, 451.2, 452.54, 454.25, 455.62, 455.75, 456.65, 457.43, 
                                458.5, 460.54, 460.95, 461.02, 461.82, 463.32, 463.48, 464.31, 
                                465.17, 466.99, 467.12, 467.59, 469.69, 470.64, 472.1, 473.49, 
                                474.43, 475.16, 477.78, 478.28, 479.61, 480.56, 482.83, 483.89, 
                                483.96, 484.86, 485.51, 486.76, 487.03, 487.09, 488.8, 489.23, 
                                489.39, 489.64, 489.68, 489.94, 491.24, 491.31, 491.52, 492.65, 
                                493.77, 494.77, 494.99, 495.63, 498.45, 500.6, 501.13, 503.42, 
                                505.42, 505.78, 507.94, 510.02, 511.79, 516.21, 517.26, 517.46, 
                                519.65, 520.98, 522.11, 523.23, 524.46, 526.09, 526.65, 528.64, 
                                528.84, 529.08, 529.25, 529.83, 531.6, 532.39, 533.61, 534.71, 
                                535.25, 535.68, 536.15, 537.53, 537.63, 539.8, 541.28, 542.29, 
                                542.45, 543.12, 543.8, 544.34, 545.3, 545.64, 548.22, 548.28, 
                                548.42, 549.06, 549.19, 549.78, 551.61, 552.97, 554.3, 554.71, 
                                557.79, 558.05, 558.16, 560.54, 562.19, 563.56, 563.59, 563.65, 
                                563.82, 564.09, 564.49, 565.68, 567.24, 567.48, 567.65, 567.68, 
                                568.86, 568.92, 570.23, 571.31, 572.26, 572.76, 573.16, 574.09, 
                                577.21, 579.71, 583.7, 584.1, 585.82, 585.88, 585.95, 586.45, 
                                586.51, 586.65, 588.26, 588.42, 588.64, 588.87, 589.3, 589.47, 
                                589.8, 590.84, 591.27, 591.54, 591.6, 592.52, 594.19, 594.65, 
                                594.82, 595.12, 595.32, 595.64, 596.37, 596.5, 596.57, 596.67, 
                                596.94, 596.97, 597.33, 597.44, 597.97, 598.44, 598.91, 598.96, 
                                600.52, 602.71, 603.18, 603.57, 604.74, 607.12, 607.46, 608.12, 
                                608.26, 608.76, 610.54, 611.08, 611.41, 612.2, 612.73, 615.19, 
                                616.61, 617.68, 617.81, 619.2, 619.67, 620.97, 621.13, 621.63, 
                                622.48, 623.01, 623.15, 624.15, 624.21, 624.55, 625.62, 626.07, 
                                629.98, 630.65, 630.92, 632.57, 632.6, 633.5, 634, 634.77, 635.5, 
                                635.86, 636.12, 638.79, 639.07, 639.41, 640.37, 642.58, 643.79, 
                                644.72, 644.76, 645.05, 645.83, 645.85, 647.01, 647.37, 650.86, 
                                651.09, 651.95, 655.01, 655.61, 656.36, 657.86, 658.83, 660.41, 
                                660.61, 660.85, 662.35, 662.55, 662.64, 663.3, 664.56, 665.1, 
                                665.49, 665.99, 666.13, 667.61, 667.75, 667.88, 667.95, 669.15, 
                                670, 670.37, 670.67, 670.7, 670.9, 671.33, 671.54, 674.18, 677.27, 
                                677.37, 678, 678.44, 679.14, 679.37, 679.69, 680.28, 681.38, 
                                682.69, 682.95, 683.41, 685.67, 685.91, 685.97, 687.02, 687.39, 
                                688.19, 688.29, 690.54, 690.68, 691.31, 692.14, 693.01, 693.24, 
                                695.12, 696.23, 698.51, 699.98, 700.93, 701.23, 703.94, 707.06, 
                                711.78, 712.9, 713, 713.13, 715.54, 718.03, 718.07, 719.39, 719.65, 
                                720.28, 721.02, 721.39, 722.23, 722.77, 724.3, 726.09, 726.66, 
                                727.16, 727.39, 729.1, 729.24, 729.57, 730.17, 730.97, 732.52, 
                                733.93, 734.63, 735.64, 735.67, 735.84, 736.57, 736.91, 736.94, 
                                737.11, 737.67, 738.89, 740.2, 740.7, 741.16, 742.08, 744.41, 
                                744.5, 745.06, 745.86, 747.03, 747.85, 748.81, 749.18, 751.33, 
                                751.63, 753.6, 753.9, 754.03, 754.49, 757.12, 758.67, 758.93, 
                                761.48, 765.27, 767.94, 768.19, 769.12, 769.55, 769.95, 770.16, 
                                771.77, 771.8, 772.74, 773.13, 773.5, 774.3, 774.77, 775.29, 
                                775.96, 776.19, 776.52, 777.35, 777.72, 778.27, 778.61, 779.07, 
                                780.61, 781.28, 781.36, 782.23, 782.7, 783.53, 785.04, 787.58, 
                                788.92, 789.3, 789.8, 790.26, 790.86, 790.99, 791.5, 792.44, 
                                793.78, 793.88, 794.68, 794.85, 795.16, 795.19, 795.96, 796.83, 
                                799.01, 799.05, 799.32, 800.62, 801.48, 803.53, 803.84, 804.17, 
                                806.18, 806.72, 807.06, 807.45, 808.02, 808.64, 809.64, 811.44, 
                                812.28, 813.95, 815.67, 816.1, 818.24, 818.69, 819.42, 819.55, 
                                819.66, 819.82, 821.63, 821.79, 821.87, 822.34, 824.87, 825.07, 
                                825.39, 825.53, 825.96, 827.79, 827.92, 828.26, 828.41, 829.34, 
                                829.64, 832.06, 832.83, 833.06, 833.53, 834.56, 836.91, 837.18, 
                                837.54, 837.65, 839.1, 841.33, 841.4, 842.21, 842.38, 842.58, 
                                842.82, 843.98, 844.52, 844.82, 845.17, 845.6, 846.8, 847.43, 
                                849.78, 849.81, 850.18, 850.95, 851.48, 851.8, 852.37, 852.67, 
                                852.87, 853.84, 855.19, 856.55, 858.05, 858.54, 859.5, 860.57, 
                                860.88, 860.9, 862.19, 862.42, 862.85, 862.96, 863.69)), row.names = c(NA, -1000L), class = c("tbl_df", "tbl", "data.frame"
                                ))

编辑:可能的解决方案(感谢 Rjen)

  mutate(Condition = case_when(Time%%420 <= 70 ~ 1,
                               Time%%420 > 70 & Time%%420 <= 2*70 ~ 2,
                               Time%%420 > 2*70 & Time%%420 <= 3*70 ~ 3,
                               Time%%420 > 3*70 & Time%%420 <= 4*70 ~ 4,
                               Time%%420 > 4*70 & Time%%420 <= 5*70 ~ 5,
                               Time%%420 > 5*70 ~ 6))

【问题讨论】:

    标签: r loops time dplyr


    【解决方案1】:

    你可以这样做。

    library(dplyr)
    
    data %>%
      mutate(Condition = case_when(Time <= 70 ~ 1,
                                   Time > 70 & Time <= 2*70 ~ 6,
                                   Time > 2*70 & Time <= 3*70 ~ 3,
                                   Time > 3*70 & Time <= 4*70 ~ 2,
                                   Time > 4*70 & Time <= 5*70 ~ 4,
                                   Time > 5*70 ~ 5))
    
    # # A tibble: 1,000 x 2
    #     Time Condition
    #    <dbl>     <dbl>
    # 1   1.71         1
    # 2   3.2          1
    # 3   4.73         1
    # 4   5.65         1
    # 5   6.65         1
    # 6   6.75         1
    # 7   7.98         1
    # 8   8.29         1
    # 9  11.4          1
    # 10 13.3          1
    

    如果需要使用向量conditionlabel,可以通过case_when(Time &lt;= 70 ~ conditionlabel[1])等方式引用。

    【讨论】:

    • 谢谢,但是需要重复添加Condition。例如,当 Time > 6*70 &
    • 我想我明白了吗?检查上面的编辑
    猜你喜欢
    • 2011-12-06
    • 2012-01-23
    • 2019-08-10
    • 2021-06-28
    • 2023-03-13
    • 1970-01-01
    • 2021-11-07
    • 2022-07-22
    • 1970-01-01
    相关资源
    最近更新 更多