【发布时间】:2021-05-23 16:12:50
【问题描述】:
我有一个表单数据集
regional.indicator ladder.score
1 A 100
2 A 200
3 B 30
4 B 40
5 C 50
我试图在名为regional.indicator 的因子中按平均ladder.score 对变量重新排序,并将这个新向量分配给order1(similar to this)。我的问题是代码回复regional.indicator不存在的错误。
示例
library(dplyr)
# Create dataset
df <- data.frame(regional.indicator = c("A","A","B","B","C"),
ladder.score = c(100,200, 30,40,50))
# Change regional.indicator to factor
df$regional.indicator <- as.factor(df$regional.indicator)
# Function where the error arises
order1 <- df %>%
group_by(regional.indicator)%>%
summarise(Laddermean = mean(ladder.score))%>%
arrange(Laddermean)%>%
pull(regional.indicator)
出现的错误消息:
Error: Can't extract columns that don't exist.
x Column `regional.indicator` doesn't exist.
Run `rlang::last_error()` to see where the error occurred.
我怎样才能摆脱这个错误或以不同的方式做到这一点?也许使用forcats?
【问题讨论】:
-
代码看起来应该可以工作,但是当我在我的计算机上尝试时遇到同样的错误。
-
我喜欢
df$order1 = forcats::fct_reorder(df$regional.indicator, df$ladder.score, mean)的语法 -
@JonSpring,这会完全一样吗?
-
我不确定我是否正确理解了您的目标。我建议的行将在您的
df中创建一个名为order1的新变量,这是您的regional.indicator作为基于ladder.score平均值的有序因子。 -
@JonSpring 这不适用于我的情况,因为它会打印出所有值,我需要有顺序以便我可以将其用作精确的顺序向量,例如 c("A", “C”、“B”)。原因是我随后会进一步操纵它。
标签: r dataframe dplyr tidyverse