Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
参数不是数字或逻辑的:返回的参数在R中不是数字或逻辑的_R_Group By_Summarize - Fatal编程技术网

参数不是数字或逻辑的:返回的参数在R中不是数字或逻辑的

参数不是数字或逻辑的:返回的参数在R中不是数字或逻辑的,r,group-by,summarize,R,Group By,Summarize,所以我使用下面的代码maindata是一个玩家、他们的家乡和每场比赛的积分表。我正在尝试制作一个新的表格,其中一列是城市,第二列是每场比赛的平均分(如表a所示)。我一直得到一个表,其中列出了城市,并且AvgPoints的行都显示NA。我得到这个错误“参数不是数字或逻辑的:返回的参数不是数字或逻辑的”,并且它会重复数百次。主要数据有3561次观测 point <- maindata%>% group_by(City, State) %>% summarise(AvgP

所以我使用下面的代码
maindata
是一个玩家、他们的家乡和每场比赛的积分表。我正在尝试制作一个新的表格,其中一列是城市,第二列是每场比赛的平均分(如表a所示)。我一直得到一个表,其中列出了城市,并且
AvgPoints
的行都显示NA。我得到这个错误“参数不是数字或逻辑的:返回的参数不是数字或逻辑的”,并且它会重复数百次。主要数据有3561次观测

point <- maindata%>%
  group_by(City, State) %>%
    summarise(AvgPoints = mean(PTS.1, na.rm = TRUE))

如果列不是数字,我们首先将其转换为
numeric
,然后执行分组操作

library(dplyr)
maindata %>%
      mutate(PTS.1 = as.numeric(as.character(PTS.1))) %>%
      group_by(City, State) %>%
      summarise(AvgPoints = mean(PTS.1, na.rm = TRUE), .groups = 'drop')

请检查
str(maindata)
中的列类型。或者特别是
类(maindata$PTS.1)
可能是“PTS.1”不是numeric@akrun它说,它们是影响因素。我不太清楚为什么。如果有一些元素是非数字的,即它将被读取为
字符
。在新版本的R中,它应该是
character
类而不是
factor
,因为默认情况下
stringsafactors=FALSE
。我的观点是,如果列具有
c(1.5,1.2,'a1')
,则它不是数字列,因为其中一个元素不是数字。您可以使用
maindata%>%mutate(PTS.1=as.numeric(as.character(PTS.1)))将因子转换为数值
,然后按进行分组。将非数字转换为数字时会出现一些友好的警告NA@akrun太好了,我理解你的观点,我已经应用了这个函数并使它工作起来。非常感谢。
library(dplyr)
maindata %>%
      mutate(PTS.1 = as.numeric(as.character(PTS.1))) %>%
      group_by(City, State) %>%
      summarise(AvgPoints = mean(PTS.1, na.rm = TRUE), .groups = 'drop')