Проблема с вычислением среднего значения строки в таблице данных для выбранных столбцов в R - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть таблица данных, как показано ниже.

Table:

LP   GMweek1  GMweek2   GMweek3  PMweek1   PMweek2  PMweek3
215   45       50        60       11        0.4     10.2
0.1   50       61        24       12        0.8     80.0
0     45       24        35       22        20.0    15.4
51    22.1     54        13       35        16      2.2  

Я хочу получить таблицу вывода ниже.Мой код ниже не работает.Может ли кто-нибудь помочь мне понять, что я делаю здесь неправильно.

Любая помощь приветствуется.

Output:

LP   GMweek1  GMweek2   GMweek3  PMweek1   PMweek2  PMweek3  AvgGM   AvgPM
215   45       50        60       11        0.4     10.2     51.67   7.20
0.1   50       61        24       12        0.8     80.0     45.00   30.93
0     45       24        35       22        20.0    15.4     34.67   19.13
51    22.1     54        13       35        16      2.2      29.70   17.73

sel_cols_GM <- c("GMweek1","GMweek2","GMweek3")
sel_cols_PM <- c("PMweek1","PMweek2","PMweek3")

Table <- Table[, .(AvgGM = rowMeans(sel_cols_GM)), by = LP]
Table <- Table[, .(AvgPM = rowMeans(sel_cols_PM)), by = LP]

1 Ответ

0 голосов
/ 08 февраля 2019

Хорошо, значит, вы делаете пару вещей неправильно.Во-первых, rowMeans не может оценить вектор символов, если вы хотите выбрать столбцы, используя его, вы должны использовать .SD и передать вектор символов в .SDcols.Во-вторых, вы пытаетесь вычислить агрегацию и группировку строк, что, я думаю, не имеет большого смысла.В-третьих, даже если ваше выражение не выдало ошибку, вы присваиваете его обратно Table, что уничтожит ваши исходные данные (если вы хотите добавить новый столбец, используйте :=, чтобы добавить его по ссылке).

То, что вы хотите сделать, - это вычислить средние значения строк выбранных вами столбцов, что вы можете сделать следующим образом:

Table[, AvgGM := rowMeans(.SD), .SDcols = sel_cols_GM] 
Table[, AvgPM := rowMeans(.SD), .SDcols = sel_cols_PM]

Это означает создание этих новых столбцов в качестве средства строк моего подмножестваданные (.SD), которые относятся к этим столбцам (.SDcols)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...