首页 > 解决方案 > 计算另一列中两列的平均值

问题描述

我正在尝试计算另一列中列的平均值但出现错误

将所有 nastring na.strings = c("N") 转换为 NA 但在列类之后是字符。

在此之后我在数据框中用 NA 代替 N 但列的类别仍然是字符

df <- data.frame("T_1_1"= c(68,24,"N",105,58,"N",135,126,24),
                 "T_1_2"=c(26,105,"N",73,39,97,46,108,"N"),
                 "T_1_3"=c(93,32,73,103,149,"N",147,113,139),
                 "S_2_1"=c(69,67,94,"N",77,136,137,92,73),
                 "S_2_2"=c(87,67,47,120,85,122,"N",96,79),
                 "S_2_3"= c(150,"N",132,121,29,78,109,40,"N"),
                 "TS1_av"=c(68.5,45.5,94,105,67.5,136,136,109,48.5),
                 "TS2_av"=c(56.5,86,47,96.5,62,109.5,46,102,79),
                 "TS3_av"=c(121.5,32,102.5,112,89,78,128,76.5,139)

)

df$TS1_av <- rowMeans(df[,c(as.numeric(as.character("T_1_1","S_2_1")))], na.rm=TRUE)

标签: r

解决方案


您可以使用 :

#Change 'N' to NA
df[df == 'N'] <- NA
#Change the type of columns
df <- type.convert(df, as.is = TRUE)
#Take mean of selected columns and add a new column
df$TS1_av <- rowMeans(df[,c("T_1_1","S_2_1")], na.rm=TRUE)
df

推荐阅读