R 查找列的平均值时出错,错误项为“;参数不是数字或逻辑参数:返回NA[1]NA";

R 查找列的平均值时出错,错误项为“;参数不是数字或逻辑参数:返回NA[1]NA";,r,mean,R,Mean,我用这段代码来寻找平均值,当我运行块时它不知怎么起作用,但是当我重新运行整个笔记本时,出现了一个错误术语 # What is the mean suspension rate for schools overall? transform(merged_data, suspension_rate_total = as.numeric(suspension_rate_total)) mean(merged_data$suspension_rate_total,na.rm

我用这段代码来寻找平均值,当我运行块时它不知怎么起作用,但是当我重新运行整个笔记本时,出现了一个错误术语


    # What is the mean suspension rate for schools  overall?
    transform(merged_data, suspension_rate_total = as.numeric(suspension_rate_total))
    mean(merged_data$suspension_rate_total,na.rm = T)
    mean(merged_data[7])

    # What is the mean suspension rate for schools with farms > 100? 
    mean(merged_data$suspension_rate_total[merged_data$farms < 100], na.rm = T)

    # What is the mean suspension rate for schools with farms < 100? 
    mean(merged_data$suspension_rate_total[merged_data$farms < 100], na.rm = T)
以下是数据:

数据

structure(list(schid = c("1030642", "1030766", "1030774", "1030840", 
"1130103", "1230150"), farms = c("132", "116", "348", "406", 
"68", "130"), foster = c("2", "0", "1", "8", "1", "4"), homeless = c("14", 
"0", "8", "4", "1", "4"), migrant = c("0", "0", "0", "0", "0", 
"0"), ell = c("18", "12", "114", "45", "7", "4"), suspension_rate_total = c("*", 
"20", "0", "0", "95", "5"), suspension_violent = c("*", "9", 
"0", "0", "20", "2"), suspension_violent_no_injury = c("*", "6", 
"0", "0", "47", "1"), suspension_weapon = c("*", "0", "0", "0", 
"8", "0"), suspension_drug = c("*", "0", "0", "0", "9", "1"), 
    suspension_defiance = c("*", "1", "0", "0", "9", "1"), suspension_other = c("*", 
    "4", "0", "0", "2", "0")), row.names = c(NA, 6L), class = "data.frame")
如果我们检查
str(合并的_数据)
,则列为
字符
,需要将其转换为
数字

mean(as.numeric(merged_data$suspension_rate_total)[as.numeric(merged_data$farms)
                  < 100], na.rm = TRUE)
#[1] 95
mean(作为数值(合并的数据$suspension\u rate\u total)[作为数值(合并的数据$farms)
<100],na.rm=TRUE)
#[1] 95
当我们转换为
numeric
时,会出现一条警告消息,因为有些非数值元素会再次转换为
NA

您D

自上一个问题以来,您的问题再次出现,因为您忘记格式化数据

merged_data<-apply(merged_data,2,as.numeric)



merged_datamean(as.numeric(merged_data$suspension_rate_total)[as.numeric(merged_data$farms)<100],na.rm=TRUE)。我得到以下代码:合并数据中的错误$suspension\u rate\u total:$运算符对原子无效vectors@claire_123根据您的
dput
示例,它是一个
data.frame
。如果数据集是
矩阵
merged_data<-apply(merged_data,2,as.numeric)


A_character <- "1"
a_num<-1

class(a_num)
[1] "numeric"

class(A_character)
[1] "character"

class(A_character)==class(a_num)
[1] FALSE

class(A_character)!=class(a_num)
[1] TRUE

df<- data.frame(c(1:3),c("1","2","3"))
colnames(df)<- c("numbers","not_numbers")
class(df$numbers)
class(df$not_numbers)
df$not_numbers<-as.character(df$not_numbers)
df$numbers<-as.numeric(df$numbers)
class(df$numbers)
class(df$not_numbers)