【问题标题】:Populate table column by relative row values of another column in R通过 R 中另一列的相对行值填充表列
【发布时间】:2018-12-04 20:36:35
【问题描述】:

我正在尝试用 R 中另一列的相对行值填充表格列。我有一个包含两个数据列(Col1、Col2)和两个点值列(P1、P2)的表。 Data1 已填充,Data2 未填充。我希望 Data2 的值由 P1 或 P2 中的值填充,基于 Data 1 的相对值。在给定的行中,如果 Data1 的先前值高于其当前值,则填充 Data2 单元格通过 P1 中的值。如果 Data1 的先前值低于其当前值,则 Data2 单元格由 P2 中的值填充。为了说明我想要做什么,我提供了两个示例表。第一个表是我所拥有的(未填充 Data2),第二个表是期望的结果。

Table1(我有什么)

+-----+----+----+-------+-------+
| FID | P1 | P2 | Data1 | Data2 |
+-----+----+----+-------+-------+
|   1 | A  | B  |    50 |       |
|   2 | C  | D  |    40 |       |
|   3 | E  | F  |    60 |       |
|   4 | G  | H  |    70 |       |
|   5 | I  | J  |    65 |       |

表 2(预期结果)

+-----+----+----+-------+-------+
| FID | P1 | P2 | Data1 | Data2 |  
+-----+----+----+-------+-------+
|   1 | A  | B  |    50 | NA    |  
|   2 | C  | D  |    40 | C     |  
|   3 | E  | F  |    60 | F     |  
|   4 | G  | H  |    70 | H     |  
|   5 | I  | J  |    65 | I     |  
+-----+----+----+-------+-------+

R 中是否有内置函数来完成此操作?如果没有,关于如何创建一个的任何建议?

【问题讨论】:

    标签: r populate


    【解决方案1】:

    使用dplyr 的解决方案可能是:

    df %>%
     mutate(Data2 = ifelse(lag(Data1) > Data1, paste0(P1), paste0(P2)))
    
      FID P1 P2 Data1 Data2
    1   1  A  B    50  <NA>
    2   2  C  D    40     C
    3   3  E  F    60     F
    4   4  G  H    70     H
    5   5  I  J    65     I
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 2018-04-07
      • 2020-08-31
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多