R:聚合数据帧总和没有意义的因素
R: aggregating data frame sum not meaningful factors
我遇到以下错误:Summary.factor(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, :
“总和”对因素没有意义
这是我的代码
library(SportsAnalytics)
nba1819 = fetch_NBAPlayerStatistics("18-19")
nbadf = data.frame(nba1819)
nbaagg = nbadf[c(5:25)]
nbaagg = lapply(nbaagg, function(x) type.convert(as.numeric(x)))
nbaagg$Team = as.character(nbadf$Team)
nbaagg = aggregate(nbaagg,
by = list(nbaagg$Team),
FUN = sum)
我已经尝试将所有内容都转换为向量,所以不明白为什么它仍然声称我有因子。这是我的 str(nbaagg)
输出
List of 22
$ GamesPlayed : int [1:530] 31 10 34 80 82 18 7 81 10 37 ...
$ TotalMinutesPlayed : int [1:530] 588 121 425 2667 1908 196 23 2689 120 414 ...
$ FieldGoalsMade : int [1:530] 56 4 38 481 280 11 3 684 13 67 ...
$ FieldGoalsAttempted: int [1:530] 157 18 110 809 487 36 10 1319 39 178 ...
$ ThreesMade : int [1:530] 41 2 25 0 3 6 0 10 3 32 ...
$ ThreesAttempted : int [1:530] 127 15 74 2 15 23 4 42 12 99 ...
$ FreeThrowsMade : int [1:530] 12 7 7 146 166 4 1 349 8 45 ...
$ FreeThrowsAttempted: int [1:530] 13 10 9 292 226 4 2 412 12 60 ...
$ OffensiveRebounds : int [1:530] 5 3 11 392 166 3 1 252 11 3 ...
$ TotalRebounds : int [1:530] 48 25 61 760 598 19 4 744 26 24 ...
$ Assists : int [1:530] 20 8 66 124 184 5 6 194 13 25 ...
$ Steals : int [1:530] 17 1 13 119 72 1 2 43 1 5 ...
$ Turnovers : int [1:530] 14 4 28 138 121 6 2 144 8 33 ...
$ Blocks : int [1:530] 6 4 5 77 65 4 0 107 0 6 ...
$ PersonalFouls : int [1:530] 53 24 45 204 203 13 4 179 7 47 ...
$ Disqualifications : int [1:530] 0 0 0 3 0 0 0 0 0 0 ...
$ TotalPoints : int [1:530] 165 17 108 1108 729 32 7 1727 37 211 ...
$ Technicals : int [1:530] 1 1 0 2 3 0 0 1 0 0 ...
$ Ejections : int [1:530] 0 0 0 0 0 0 0 0 0 0 ...
$ FlagrantFouls : int [1:530] 0 0 0 0 0 0 0 0 0 0 ...
$ GamesStarted : int [1:530] 2 0 1 80 28 3 0 81 1 2 ...
$ Team : chr [1:530] "OKL" "PHO" "ATL" "OKL" ...
基于 str(nbaagg)
,nbaagg
是 vector
的 list
而不是 data.frame。它可以转换为 data.frame
和 as.data.frame
(这里 list
元素等于 length
nbaagg <- as.data.frame( nbaagg)
那么,我们可以使用
aggregate(.~ Team, nbaagg, FUN = sum, na.rm = TRUE, na.action = NULL)
它是在这一步list
中创建的
nbaagg <- lapply(nbaagg, function(x) type.convert(as.numeric(x)))
lapply
输出始终是 list
。如果我们希望拥有与原始数据集中相同的属性,请使用 []
nbaagg[] <- lapply(nbaagg, function(x) type.convert(as.numeric(x)))
在这里,type.convert
可以直接用在数据集上,假设它们都是 character
class 而不是 lapply
的循环
nbaagg <- type.convert(nbaagg, as.is = TRUE)
我遇到以下错误:Summary.factor(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, : “总和”对因素没有意义
这是我的代码
library(SportsAnalytics)
nba1819 = fetch_NBAPlayerStatistics("18-19")
nbadf = data.frame(nba1819)
nbaagg = nbadf[c(5:25)]
nbaagg = lapply(nbaagg, function(x) type.convert(as.numeric(x)))
nbaagg$Team = as.character(nbadf$Team)
nbaagg = aggregate(nbaagg,
by = list(nbaagg$Team),
FUN = sum)
我已经尝试将所有内容都转换为向量,所以不明白为什么它仍然声称我有因子。这是我的 str(nbaagg)
输出List of 22
$ GamesPlayed : int [1:530] 31 10 34 80 82 18 7 81 10 37 ...
$ TotalMinutesPlayed : int [1:530] 588 121 425 2667 1908 196 23 2689 120 414 ...
$ FieldGoalsMade : int [1:530] 56 4 38 481 280 11 3 684 13 67 ...
$ FieldGoalsAttempted: int [1:530] 157 18 110 809 487 36 10 1319 39 178 ...
$ ThreesMade : int [1:530] 41 2 25 0 3 6 0 10 3 32 ...
$ ThreesAttempted : int [1:530] 127 15 74 2 15 23 4 42 12 99 ...
$ FreeThrowsMade : int [1:530] 12 7 7 146 166 4 1 349 8 45 ...
$ FreeThrowsAttempted: int [1:530] 13 10 9 292 226 4 2 412 12 60 ...
$ OffensiveRebounds : int [1:530] 5 3 11 392 166 3 1 252 11 3 ...
$ TotalRebounds : int [1:530] 48 25 61 760 598 19 4 744 26 24 ...
$ Assists : int [1:530] 20 8 66 124 184 5 6 194 13 25 ...
$ Steals : int [1:530] 17 1 13 119 72 1 2 43 1 5 ...
$ Turnovers : int [1:530] 14 4 28 138 121 6 2 144 8 33 ...
$ Blocks : int [1:530] 6 4 5 77 65 4 0 107 0 6 ...
$ PersonalFouls : int [1:530] 53 24 45 204 203 13 4 179 7 47 ...
$ Disqualifications : int [1:530] 0 0 0 3 0 0 0 0 0 0 ...
$ TotalPoints : int [1:530] 165 17 108 1108 729 32 7 1727 37 211 ...
$ Technicals : int [1:530] 1 1 0 2 3 0 0 1 0 0 ...
$ Ejections : int [1:530] 0 0 0 0 0 0 0 0 0 0 ...
$ FlagrantFouls : int [1:530] 0 0 0 0 0 0 0 0 0 0 ...
$ GamesStarted : int [1:530] 2 0 1 80 28 3 0 81 1 2 ...
$ Team : chr [1:530] "OKL" "PHO" "ATL" "OKL" ...
基于 str(nbaagg)
,nbaagg
是 vector
的 list
而不是 data.frame。它可以转换为 data.frame
和 as.data.frame
(这里 list
元素等于 length
nbaagg <- as.data.frame( nbaagg)
那么,我们可以使用
aggregate(.~ Team, nbaagg, FUN = sum, na.rm = TRUE, na.action = NULL)
它是在这一步list
中创建的
nbaagg <- lapply(nbaagg, function(x) type.convert(as.numeric(x)))
lapply
输出始终是 list
。如果我们希望拥有与原始数据集中相同的属性,请使用 []
nbaagg[] <- lapply(nbaagg, function(x) type.convert(as.numeric(x)))
在这里,type.convert
可以直接用在数据集上,假设它们都是 character
class 而不是 lapply
nbaagg <- type.convert(nbaagg, as.is = TRUE)