Функция приведения не работает с функцией суммы - PullRequest
0 голосов
/ 12 марта 2020

Недавно я столкнулся с проблемой при попытке использовать функцию приведения для суммирования некоторых переменных по группам.

Подробности следующие:

dataframe

id  time    variable    value
1   1   x1  5
1   2   x1  3
2   1   x1  6
2   2   x1  2
1   1   x2  6
1   2   x2  5
2   1   x2  1
2   2   x2  4

Следующий код работает очень хорошо:

subjmeans <- cast(mdata, id~variable, mean)

subjmeans

id  x1  x2
1   4   5.5
2   4   2.5

Но когда я заменяю функцию среднего (встроенную в функцию приведения) на «сумму», то есть приведение (mdata, id ~ variable, sum)

R сообщает следующее сообщение об ошибке:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 4, 0

Я также пробовал другие функции, такие как "max", "length", все работает, кроме "sum".

Это очень странно, особенно если учесть, что тот же код очень хорошо работал с «суммой» на прошлой неделе.

Лучший Синхуа

1 Ответ

0 голосов
/ 12 марта 2020

Работает нормально

reshape::cast(mdata, id ~ variable, sum) 
#   id x1 x2
#1  1  8 11
#2  2  8  5

Единственное возможное объяснение - маскирование функции sum под тем же именем функции из других загруженных пакетов

data

mdata <- structure(list(id = c(1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L), time = c(1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L), variable = c("x1", "x1", "x1", "x1", 
"x2", "x2", "x2", "x2"), value = c(5L, 3L, 6L, 2L, 6L, 5L, 1L, 
4L)), class = "data.frame", row.names = c(NA, -8L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...