Заполните столбец таблицы относительными значениями строки другого столбца в R - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь заполнить столбец таблицы относительными значениями строки другого столбца в R .У меня есть таблица с двумя столбцами данных (Col1, Col2) и двумя столбцами значения точки (P1, P2).Данные1 заполнены, Данные2 нет.Я хочу, чтобы значение Data2 заполнялось значением в P1 или P2 на основе относительного значения Data 1. В данной строке, если предыдущее значение Data1 превышает его текущее значение, ячейка Data2 заполняется.по значению в P1.Если предыдущее значение Data1 ниже его текущего значения, ячейка Data2 заполняется значением в P2.Чтобы проиллюстрировать, что я пытаюсь сделать, я предоставил две таблицы примеров.Первая таблица - это то, что у меня есть (данные 2 не заполнены), а вторая таблица - желаемый результат.

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 |       |

Table2 (желаемый результат)

+-----+----+----+-------+-------+
| 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 длявыполнить это?Если нет, то какой совет по его созданию?

1 Ответ

0 голосов
/ 04 декабря 2018

Решение с использованием tidyverse:

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
...