我有一个带有网格开放度量的数据集,以及用来获取这些度量的工具。我想在数据上完成一个单向的程序。这是我的密码:
df<-structure(list(MeasurementTool = c("Wedge", "Wedge", "Wedge",
"Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge",
"Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge", "Wedge",
"Wedge", "Wedge", "Wedge", "Weighted Wedge", "Weighted Wedge",
"Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge",
"Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge",
"Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge",
"Weighted Wedge", "Weighted Wedge", "Weighted Wedge", "Weighted Wedge",
"Weighted Wedge", "Weighted Wedge", "ICES Gauge", "ICES Gauge",
"ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge",
"ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge",
"ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge", "ICES Gauge",
"ICES Gauge", "ICES Gauge", "ICES Gauge"),
MeshOpening = c(157L, 155L, 160L, 160L, 161L, 160L, 158L, 161L, 162L, 162L, 160L, 163L,
158L, 160L, 161L, 165L, 164L, 158L, 164L, 163L, 159L, 158L, 165L,
164L, 159L, 160L, 158L, 159L, 160L, 163L, 159L, 160L, 158L, 158L,
158L, 162L, 160L, 159L, 159L, 159L, 159L, 159L, 159L, 155L, 156L,
156L, 158L, 160L, 156L, 155L, 160L, 160L, 157L, 159L, 158L, 155L,
158L, 157L, 156L, 158L)), row.names = c(NA, -60L), class = "data.frame")
df$`MeasurementTool`<- as.factor(df$`MeasurementTool`)
group_by(df, 'MeasurementTool') %>% summarise(count = n(), mean = mean('MeshOpening', na.rm = TRUE), sd = sd('MeshOpening', na.rm = TRUE))它给了我这些警告信息:
警告消息:
1:在mean.default("MeshOpening",na.rm = TRUE)中:参数不是数字或逻辑:返回NA
2:在var中(if (is.vector(x) \x= is.factor(x)) x na.rm as.double(x),na.rm= na.rm):NAs由强制引入
发布于 2021-10-31 01:14:45
你被dplyr::summarise的工作方式绊倒了。它期待一个R name (a.k.a )。( symbol),即字母周围没有引号:
group_by(df, 'MeasurementTool') %>% summarise(count = n(), mean = mean(MeshOpening, na.rm = TRUE), sd = sd(MeshOpening, na.rm = TRUE))
# A tibble: 1 × 4
`"MeasurementTool"` count mean sd
<chr> <int> <dbl> <dbl>
1 MeasurementTool 60 159. 2.48在前世,我们通常会像你一样,用它们的字符值来称呼列,但许多人似乎喜欢把列名看作是第一流的对象,就像现在在tidyverse中那样。
更好的办法不仅是解决错误的原因,而且要得到你真正想要的东西:
group_by(df, MeasurementTool) %>% summarise(count = n(),
mean = mean(MeshOpening, na.rm = TRUE),
sd = sd(MeshOpening, na.rm = TRUE))
# A tibble: 3 × 4
MeasurementTool count mean sd
<fct> <int> <dbl> <dbl>
1 ICES Gauge 20 158. 1.73
2 Wedge 20 161. 2.56
3 Weighted Wedge 20 160. 2.06可以说,如果group_by函数的第二个参数的值不被解释为与列名匹配的值,则应该抛出一个错误或至少一个警告。
https://stackoverflow.com/questions/69783201
复制相似问题