Как эффективно разместить данные на основе столбца (R) - PullRequest
1 голос
/ 20 февраля 2020

Это мой первый пост, так что терпите меня при форматировании. Я пытаюсь выбрать данные на основе данных других столбцов эффективно.

Набор данных выглядит следующим образом:

+------+------+------+------+--+
| Var1 | Var2 | Var3 | Type |  |
+======+======+======+======+==+
|  3.3 |  2.3 |  5.5 |    1 |  |
|  3.4 |  2.0 |  7.5 |    2 |  |
|  2.9 |  1.9 |  6.2 |    1 |  |
|  3.1 |  2.2 |  5.9 |    1 |  |
|  3.3 |  2.1 |  7.1 |    3 |  |
+------+------+------+------+--+

В строке 1, когда Type = 1, я хочу выбрать эти строки Var1 и поместить их в другой столбец для Type = 2, Var2, Type = 3, Var3 - и так далее. Как бы я сделал это эффективно? Я сделал это с помощью для l oop, но с большим набором данных требуется время для обработки. Спасибо

  • По сути, в псевдокод, я думал

Если df [i, 4] == 1, то df [i, 5] = = df [i, 1]

1 Ответ

1 голос
/ 20 февраля 2020

Мы можем сделать поднабор матрицы.

df$new_col <- df[cbind(1:nrow(df), df$Type)]
df
#  Var1 Var2 Var3 Type new_col
#1  3.3  2.3  5.5    1     3.3
#2  3.4  2.0  7.5    2     2.0
#3  2.9  1.9  6.2    1     2.9
#4  3.1  2.2  5.9    1     3.1
#5  3.3  2.1  7.1    3     7.1

data

df <- structure(list(Var1 = c(3.3, 3.4, 2.9, 3.1, 3.3), Var2 = c(2.3, 
2, 1.9, 2.2, 2.1), Var3 = c(5.5, 7.5, 6.2, 5.9, 7.1), Type = c(1L, 
2L, 1L, 1L, 3L)), class = "data.frame", row.names = c(NA, -5L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...